Advertisement

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

阅读量:

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

复制代码
 """

    
 打字游戏
    
 1. 声明列表word、xx(x坐标值)、yy(y坐标值)
    
 2. 创建init()函数,初始化三个列表
    
 3. 第四部分:paint ===>绘制字符
    
 4. 第三部分:action ===>进行字母移动
    
 5. 键盘监听事件  循环比对
    
   9. """
    
 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. 键盘监听事件  循环比对
    
   9. 拓展练习:
    
 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. 为了使该游戏设计更真实丰富,贴近生活实际,代码可以继续添加其他的功能。

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

全部评论 (0)

还没有任何评论哟~