python:pygame小游戏(三)—— 打字游戏
程序员文章站
2022-03-18 16:51:32
代码一:实现字符下落的基本功能"""打字游戏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()
运行效果贴图展示:
注:
1. 为了使该游戏设计更真实丰富,贴近生活实际,代码可以继续添加其他的功能。
如字母落到底部过程都没有消失,进行扣分处理,低于一定分值结束游戏等。具体实现可自行设计。
本文地址:https://blog.csdn.net/Wang_susu/article/details/85923141
上一篇: $(...) is null