Python Pygame如何实现水果忍者游戏
发表于:2025-02-19 作者:千家信息网编辑
千家信息网最后更新 2025年02月19日,这篇文章给大家分享的是有关Python Pygame如何实现水果忍者游戏的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、准备中1.0 游戏规则Python版本的水果忍者小
千家信息网最后更新 2025年02月19日Python Pygame如何实现水果忍者游戏
这篇文章给大家分享的是有关Python Pygame如何实现水果忍者游戏的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
一、准备中
1.0 游戏规则
Python版本的水果忍者小编初始化设置是玩家3条生命值,切到相应的水果相应加分,切到易爆物
比如炸弹这些就会相应的减少生命值,在生命值内可以一直切切切,切的越多分数越高,相应的生命值耗尽即结束游戏哦!快试试你能得几分?
哈哈哈,今天也录制了游戏视频的,看着视频更有玩游戏的感觉嘛~
1.1 游戏图片素材(可修改)
1.2 游戏字体素材(可修改)
二、环境安装
本文用的Python3、Pycharm写的。模块Pygame、random随机出现水果以及一些自带的。
这里模块安装命令统一镜像源豆瓣:
pip install -i https://pypi.douban.com/simple/ +模块名
三、开始敲代码
3.0 设置界面玩家生命值等
player_lives = 3 # 生命score = 0 # 得分fruits = ['melon', 'orange', 'pomegranate', 'guava', 'bomb'] # 水果和炸弹
3.1 导入模块
import pygame, sysimport osimport random
3.2 界面背景、字体设置
background = pygame.image.load('背景图/02.png') # 背景font = pygame.font.Font(os.path.join(os.getcwd(), '字体/comic.ttf'), 42) # 字体score_text = font.render('Score : ' + str(score), True, (255, 255, 255)) # 得分的字体样式
3.3 游戏窗口设置
WIDTH = 800HEIGHT = 500FPS = 12 # gameDisplay的帧率,1/12秒刷新一次pygame.init()pygame.display.set_caption('水果忍者_csdn账号:顾木子吖') # 标题gameDisplay = pygame.display.set_mode((WIDTH, HEIGHT)) # 游戏窗口clock = pygame.time.Clock()
3.4 随机生成水果的位置与数据存放
def generate_random_fruits(fruit): fruit_path = "images/" + fruit + ".png" data[fruit] = { 'img': pygame.image.load(fruit_path), 'x' : random.randint(100,500), # 水果在x坐标轴上的位置 'y' : 800, 'speed_x': random.randint(-10,10), # 水果在x方向时的速度和对角线移动 'speed_y': random.randint(-80, -60), # y方向时的速度 'throw': False, # 如果生成水果的位置在gameDisplay之外,将被丢弃 't': 0, 'hit': False, } if random.random() >= 0.75: # 返回在[0.0, 1.0]范围内的下一个随机浮点数,以保持水果在游戏中的显示。 data[fruit]['throw'] = True else: data[fruit]['throw'] = False
3.5 用一个字典来存放水果的数据
data = {}for fruit in fruits: generate_random_fruits(fruit) def hide_cross_lives(x, y): gameDisplay.blit(pygame.image.load("images/red_lives.png"), (x, y))
3.6 在屏幕中绘制字体
font_name = pygame.font.match_font('comic.ttf')def draw_text(display, text, size, x, y): font = pygame.font.Font(font_name, size) text_surface = font.render(text, True, WHITE) text_rect = text_surface.get_rect() text_rect.midtop = (x, y) gameDisplay.blit(text_surface, text_rect)
3.7 绘制玩家的生命
def draw_lives(display, x, y, lives, image) : for i in range(lives) : img = pygame.image.load(image) img_rect = img.get_rect() img_rect.x = int(x + 35 * i) img_rect.y = y display.blit(img, img_rect)
3.8 游戏开始与结束画面
def show_gameover_screen(): gameDisplay.blit(background, (0,0)) draw_text(gameDisplay, "FRUIT NINJA!", 90, WIDTH / 2, HEIGHT / 4) if not game_over : draw_text(gameDisplay,"Score : " + str(score), 50, WIDTH / 2, HEIGHT /2) draw_text(gameDisplay, "Press any key to start the game", 64, WIDTH / 2, HEIGHT * 3 / 4) pygame.display.flip() waiting = True while waiting: clock.tick(FPS) for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() if event.type == pygame.KEYUP: waiting = False
3.9 游戏主循环
first_round = Truegame_over = True # 超过3个炸弹,终止游戏循环game_running = True # 管理游戏循环while game_running : if game_over : if first_round : show_gameover_screen() first_round = False game_over = False player_lives = 3 draw_lives(gameDisplay, 690, 5, player_lives, 'images/red_lives.png') score = 0 for event in pygame.event.get(): # 检查是否关闭窗口 if event.type == pygame.QUIT: game_running = False gameDisplay.blit(background, (0, 0)) gameDisplay.blit(score_text, (0, 0)) draw_lives(gameDisplay, 690, 5, player_lives, 'images/red_lives.png') for key, value in data.items(): if value['throw']: value['x'] += value['speed_x'] # x方向上移动水果 value['y'] += value['speed_y'] # y方向上移动 value['speed_y'] += (1 * value['t']) # 递增 value['t'] += 1 if value['y'] <= 800: gameDisplay.blit(value['img'], (value['x'], value['y'])) # 动态显示水果 else: generate_random_fruits(key) current_position = pygame.mouse.get_pos() # 获取鼠标的位置,单位为像素 if not value['hit'] and current_position[0] > value['x'] and current_position[0] < value['x']+60 \ and current_position[1] > value['y'] and current_position[1] < value['y']+60: if key == 'bomb': player_lives -= 1 if player_lives == 0: hide_cross_lives(690, 15) elif player_lives == 1 : hide_cross_lives(725, 15) elif player_lives == 2 : hide_cross_lives(760, 15) # 超过3次炸弹,提示游戏结束,重置窗口 if player_lives < 0 : show_gameover_screen() game_over = True half_fruit_path = "images/explosion.png" else: half_fruit_path = "images/" + "half_" + key + ".png" value['img'] = pygame.image.load(half_fruit_path) value['speed_x'] += 10 if key != 'bomb' : score += 1 score_text = font.render('Score : ' + str(score), True, (255, 255, 255)) value['hit'] = True else: generate_random_fruits(key) pygame.display.update() clock.tick(FPS) pygame.quit()
四、游戏展示效果
4.1 Part 1 动态视频展示效果如下
视频链接
Python版水果忍者,有趣有趣~
4.2 Part 2 静态截图展示效果如下
(1)游戏进入界面——
(2)修改下背景图进入的界面——这个感觉貌似好看点儿~
4.3 Part 3 静态进入游戏界面截图如下
感谢各位的阅读!关于"Python Pygame如何实现水果忍者游戏"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
水果
生命
字体
界面
方向
模块
炸弹
背景
视频
位置
效果
玩家
循环
移动
有趣
内容
得分
感觉
截图
数据
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全宣传片10月13日
阿里巴巴网络技术有限公司简称
wind数据库只从2016
涪陵区工商软件开发流程报价表
vs怎么更改数据库信息
安徽移动网络安全周
如何建立文献 数据库
网络安全数字资产解决方案
专科计算机网络技术综述
郑州前端软件开发价格表
武大网络安全学院怎样
江苏方便软件开发销售价格
福建公司管理系统软件开发
中国核心遴选数据库收录
多维度保证网络安全
软件开发中角色定义
软件开发的流程图
微信服务器配置域名不安全
意识形态和网络安全方面
网络技术咨询有哪些业务
怎样知道数据库表数据改变了
做好监狱网络安全管理工作
在线设计下单系统软件开发
路由和网络技术
盐城节能软件开发价格
mysql数据库连接器
大学生网络安全存在哪些问题
ibm 服务器配置
小规模软件开发账务处理
网络安全应急 物资 备件