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,画到窗口上)这样我的困难也就解决了。(我毕竟不是程序员,我是做生物技术的,以上代码在格式上和命名规范上可能会存在小小不合规,但不影响测试结果,希望大家批评指正。)

  • 44
    点赞
  • 264
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
好的,我可以为您提供一个使用 PythonPygame 模块制作的非常简单的小游戏示例,这个游戏是“打字游戏”: 首先需要安装 Pygame 模块,可以使用 pip 命令进行安装: ``` pip install pygame ``` 然后创建一个 Python 文件,将以下代码复制进去: ```python import pygame import random # 初始化 Pygame pygame.init() # 设置游戏窗口大小和标题 screen_width = 800 screen_height = 600 screen = pygame.display.set_mode((screen_width, screen_height)) pygame.display.set_caption("打字游戏") # 设置游戏字体 font = pygame.font.SysFont("arial", 36) # 设置游戏文字和颜色 text = "abcdefghijklmnopqrstuvwxyz" colors = [(255, 0, 0), (0, 255, 0), (0, 0, 255)] # 设置游戏参数 speed = 5 score = 0 # 游戏主循环 while True: # 处理事件 for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() exit() # 生成一个随机字母 letter = random.choice(text) # 绘制字母和分数 screen.fill((255, 255, 255)) letter_surface = font.render(letter, True, random.choice(colors)) screen.blit(letter_surface, (screen_width/2, screen_height/2)) score_surface = font.render("分数:" + str(score), True, (0, 0, 0)) screen.blit(score_surface, (10, 10)) pygame.display.update() # 移动字母 letter_rect = letter_surface.get_rect(center=(screen_width/2, screen_height/2)) letter_rect = letter_rect.move(random.randint(-speed, speed), random.randint(-speed, speed)) # 检测用户输入 keys = pygame.key.get_pressed() if keys[pygame.K_ESCAPE]: pygame.quit() exit() elif keys[pygame.key.key_code(letter)]: score += 1 speed += 1 ``` 这个小游戏很简单,屏幕上会不断出现随机字母,用户需要按下键盘上对应的字母来获得分数,同时随机字母的速度会不断增加,直到用户按下 ESC 键退出游戏
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值