欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python:pygame小游戏(三)—— 打字游戏

程序员文章站 2022-06-18 23:45:53
代码一:实现字符下落的基本功能"""打字游戏1. 声明列表word、xx(x坐标值)、yy(y坐标值)2. 创建init()函数,初始化三个列表3. 第四部分:paint ===>绘制字符4. 第三部分:action ===>进行字母移动5. 键盘监听事件 循环比对"""import pygame, sys# 导入随机函数模块import rando......

   代码一:实现字符下落的基本功能

"""
打字游戏
1. 声明列表word、xx(x坐标值)、yy(y坐标值)
2. 创建init()函数,初始化三个列表
3. 第四部分:paint ===>绘制字符
4. 第三部分:action ===>进行字母移动
5. 键盘监听事件  循环比对

"""
import pygame, sys
# 导入随机函数模块
import random

"""
第一部分:主函数
"""
def menu():
    # 1.设置窗口标题
    pygame.display.set_caption("打字游戏")
    # 2.死循环
    while True:
        # 3.设置背景颜色填充
        screen.fill((255, 255, 255))
        # 绘制哪张图,以及起始点位置
        #screen.blit(back, (0, 0))

        # 4.调用业务处理函数
        action()
        # 5.调用图形图案绘制函数
        paint()
        # 7.屏幕刷新延迟
        pygame.time.delay(10)
        # 6.设置窗口刷新屏幕
        pygame.display.update()

"""
第二部分:变量声明初始化区域
"""
# 设置窗体
screen = pygame.display.set_mode((800, 600), 0, 0)
# 存储字母列表
word = []
# 存储字母坐标值列表
xx = []
yy = []
# 加载图片
# back = pygame.image.load("1.jpg")


"""
第五部分:初始化函数
"""
def init():
    for i in range(0,10):
        # 字母 ===》A :65  a==>97
        word.append(random.randint(65,90))
        # 坐标值
        xx.append(random.randint(0,800))
        yy.append(random.randint(0,600))

"""
第三部分:业务逻辑处理区域
"""
def action():
    # 4.1 循环迭代事件监听
    for event in pygame.event.get():
        # 4.2 判断是否退出系统
        if event.type == pygame.QUIT:
            sys.exit()
        # 4.4 循环比对
        if event.type == pygame.KEYDOWN:  # 键盘按下
            # 4.5 循环遍历与按键比较
            for i in range(0,10):
                # 4.6 判断
                if event.key == word[i]+32:
                    # 4.7 业务处理
                    word[i] = random.randint(65,90)  # 使得word“消失”
                    xx[i] = random.randint(0,800)  # xx坐标另产生一个随机数,表现为“消失”
                    # 使得yy坐标“消失”,yy坐标变负号,消失在屏幕看不见的位置
                    yy[i] = -random.randint(0,600)
                    # 4.8 防止消失多个
                    break
    # 4.3 字母移动
    for i in range(0,10):
        yy[i] += 1
        # 循环判断
        if yy[i] > 600:
            yy[i] = 0
    # 4.3.1 根据飞行方向修改坐标值
    # 4.3.2 根据坐标值修改飞行方向
    # 4.4 根据分数修改速度

"""
第四部分:图形图案绘制区域
"""
def paint():
    # 4.1 初始化字体
    pygame.font.init()
    # 4.2 设置字体样式 (ps: wryh.ttf是字体库的文件,该文件已经上传,下载后和项目文件放到一个文件夹中)
    font = pygame.font.Font("wryh.ttf", 28)
    # 4.3 循环迭代
    for i in range(0,10):
        # 4.4 设置绘制内容
        fontRead = font.render(chr(word[i]),True,(0,0,0)) # int转字符串,字体为黑色
        # 4.5 设置绘制内容的坐标
        screen.blit(fontRead,(xx[i],yy[i]))  # 将字符串绘制到该窗口上


# main函数
if __name__ == '__main__':
    init()
    menu()

  代码二:进一步完善代码功能,设计成更好看的界面 

"""
打字游戏
1. 声明列表word、xx(x坐标值)、yy(y坐标值)
2. 创建init()函数,初始化三个列表
3. 第四部分:paint ===>绘制字符
4. 第三部分:action ===>进行字母移动
5. 键盘监听事件  循环比对

拓展练习:
1. 分数 score +5
2. 根据分数处理 速度问题
3. 更改颜色 每个字母只有一个颜色
4. 更改背景 将背景改为图片
"""
import pygame, sys
# 导入随机函数模块
import random

"""
第一部分:主函数
"""
def menu():
    # 1.设置窗口标题
    pygame.display.set_caption("打字游戏")
    # 2.死循环
    while True:
        # 3.设置背景颜色填充
        # screen.fill((255, 255, 255))
        # 绘制哪张图,以及起始点位置
        screen.blit(back, (0, 0))

        # 4.调用业务处理函数
        action()
        # 5.调用图形图案绘制函数
        paint()
        # 7.屏幕刷新延迟
        pygame.time.delay(speed)
        # 6.设置窗口刷新屏幕
        pygame.display.update()

"""
第二部分:变量声明初始化区域
"""
# 设置窗体
screen = pygame.display.set_mode((800, 600), 0, 0)
# 存储字母列表
word = []
# 存储字母坐标值列表
xx = []
yy = []
# 存储得分
score = 0
# 存储RGB颜色值
R = 0
G = 0
B = 0
# 存储速度
speed = 20
# 加载图片(选一张好看的图片作为背景)
back = pygame.image.load("1.jpg")

"""
第五部分:初始化函数
"""
def init():
    for i in range(0,10):
        # 字母 ===》A :65  a==>97
        word.append(random.randint(65,90))
        # 坐标值
        xx.append(random.randint(0,800))
        yy.append(random.randint(0,600))

"""
第三部分:业务逻辑处理区域
"""
def action():
    global score
    # 4.1 循环迭代事件监听
    for event in pygame.event.get():
        # 4.2 判断是否退出系统
        if event.type == pygame.QUIT:
            sys.exit()
        # 4.4 循环比对
        if event.type == pygame.KEYDOWN:  # 键盘按下
            # 4.5 循环遍历与按键比较
            for i in range(0,10):
                # 4.6 判断
                if event.key == word[i]+32:
                    # 4.7 业务处理
                    word[i] = random.randint(65,90)  # 使得word“消失”
                    xx[i] = random.randint(0,800)  # xx坐标另产生一个随机数,表现为“消失”
                    # 使得yy坐标“消失”,yy坐标变负号,消失在屏幕看不见的位置
                    yy[i] = -random.randint(0,600)
                    score += 5
                    # 4.8 防止消失多个
                    break
    # 4.3 字母移动
    for i in range(0,10):
        yy[i] += 1
        # 循环判断
        if yy[i] > 600:
            yy[i] = 0
    # 4.4 根据分数修改速度
    global speed
    if score > 500:  # 20个字
        speed = 3
    elif score > 250:  # 50个字
        speed = 5
    elif score > 100:  # 100个字
        speed = 10


"""
第四部分:图形图案绘制区域
"""
def paint():
    # 4.1 初始化字体
    pygame.font.init()
    # 4.2 设置字体样式 (ps: wryh.ttf是字体库的文件,该文件已经上传,下载后和项目文件放到一个文件夹中)
    font = pygame.font.Font("wryh.ttf", 28)
    # 4.3 循环迭代
    for i in range(0,10):
        # 4.7 调用updateColor
        updateColor()
        # 4.4 设置绘制内容
        fontRead = font.render(chr(word[i]),True,(R,G,B)) # int转字符串,字体为黑色
        scoreShow = font.render("score:%s"%score,True,(255,0,0))
        # 4.5 设置绘制内容的坐标
        screen.blit(fontRead,(xx[i],yy[i]))  # 将字符串绘制到该窗口上
        # 4.6 绘制分数
        screen.blit(scoreShow, (20,20))  # 将字符串绘制到该窗口上

"""
第六部分:更改RGB颜色值
"""
def updateColor():
    global R,G,B
    R = random.randint(0,255)
    G = random.randint(0, 255)
    B = random.randint(0, 255)

# main函数
if __name__ == '__main__':
    init()
    menu()

  运行效果贴图展示:

python:pygame小游戏(三)—— 打字游戏

 注:

1. 为了使该游戏设计更真实丰富,贴近生活实际,代码可以继续添加其他的功能。

    如字母落到底部过程都没有消失,进行扣分处理,低于一定分值结束游戏等。具体实现可自行设计。

 

本文地址:https://blog.csdn.net/Wang_susu/article/details/85923141

相关标签: pygame