Python 用pygame 做一个游戏的开始界面(小白第一篇博客)
Python 用pygame 做一个游戏的开始界面(小白第一篇博客)
主要功能实现
本篇文章主要是实现了一个游戏开始界面的两个功能:
1,将鼠标放到”开始游戏“或”结束游戏“字样是 字样由黑色变为红色
1,可以实现点击开始游戏,游戏自动跳转到游戏界面(即,可以运行游戏的第一关了)
2,点击结束游戏,游戏退出。
素材准备
首先准备素材,为了方便起见,我从艺术字网上索取了我个人觉得比较好看的字体(开始游戏和结束游戏,背景是白色,算了我懒得扣成透明背景。
各图片的命名参考如上图,对应代码而已。
代码参考
import pygame
pygame.init()
ck = pygame.display.set_mode((800,600)) # 游戏窗口
pygame.display.set_caption("拳皇双截龙") # 给窗口取个名 我小时候喜欢双截龙和拳皇
clock = pygame.time.Clock() # 游戏刷新速度(我个人这么理解)
start_ck = pygame.Surface(ck.get_size()) # 充当开始界面的画布
start_ck2 = pygame.Surface(ck.get_size()) # 充当第一关的画布界面暂时占位(可以理解为游戏开始了)
start_ck = start_ck.convert()
start_ck2 = start_ck2.convert()
start_ck.fill((255,255,255)) # 白色画布1(开始界面用的)
start_ck2.fill((0,255,0))
# 加载各个素材图片 并且赋予变量名
i1 = pygame.image.load("./images/s1.png")
i1.convert()
i11 = pygame.image.load("./images/s2.png")
i11.convert()
i2 = pygame.image.load("./images/n2.png")
i2.convert()
i21 = pygame.image.load("./images/n1.png")
i21.convert()
i3 = pygame.image.load('./images/m2.png')
i3.convert()
i31 = pygame.image.load('./images/m1.png')
i31.convert()
bg = pygame.image.load('./images/bj.jpg')
bg.convert()
# 以下为选择开始界面鼠标检测结构。
n1 = True
while n1:
clock.tick(30)
buttons = pygame.mouse.get_pressed()
x1, y1 = pygame.mouse.get_pos()
if x1 >= 227 and x1 <= 555 and y1 >= 261 and y1 <=327:
start_ck.blit(i11, (200, 240))
if buttons[0]:
n1 = False
elif x1 >= 227 and x1 <= 555 and y1 >= 381 and y1 <=447:
start_ck.blit(i21, (200, 360))
if buttons[0]:
pygame.quit()
exit()
elif x1 >= 227 and x1 <= 555 and y1 >= 501 and y1 <=567:
start_ck.blit(i31, (200, 480))
else:
start_ck.blit(i1, (200, 240))
start_ck.blit(i2, (200, 360))
start_ck.blit(i3, (200, 480))
ck.blit(start_ck,(0,0))
pygame.display.update()
# 下面是监听退出动作
# 监听事件
for event in pygame.event.get():
# 判断事件类型是否是退出事件
if event.type == pygame.QUIT:
print("游戏退出...")
# quit 卸载所有的模块
pygame.quit()
# exit() 直接终止当前正在执行的程序
exit()
ck.blit(start_ck2,(0,0))
pygame.display.update()
# 以下可以写第一关的代码了
n2 = True
while n2:
clock.tick(30)
ck.blit(start_ck2, (0, 0))
start_ck2.blit(bg,(0,0))
pygame.display.update()
for event in pygame.event.get():
# 判断事件类型是否是退出事件
if event.type == pygame.QUIT:
print("游戏退出...")
# quit 卸载所有的模块
pygame.quit()
# exit() 直接终止当前正在执行的程序
exit()
运行效果
下面的这个散打运动员图片就是游戏开始了。
分析
之前做过一个类似的,不过点击开始游戏之后画面倒是能跳转,但是鼠标放到其他区域依然会显示字体,所以就自己琢磨了这样一个模式,用两套while 循环,每套循环里都配置上监听事件,由于代码是从上至下运行,所以只要第一个while Ture 循环没有关闭,第二个 循环就不会执行,第一个循环结束之前讲画布2 (也就是start_ck2,画到窗口上)这样我的困难也就解决了。(我毕竟不是程序员,我是做生物技术的,以上代码在格式上和命名规范上可能会存在小小不合规,但不影响测试结果,希望大家批评指正。)