Python Pygame如何实现水果忍者游戏
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章给大家分享的是有关Python Pygame如何实现水果忍者游戏的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、准备中1.0 游戏规则Python版本的水果忍者小
千家信息网最后更新 2025年02月01日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安全错误
数据库的锁怎样保障安全
阿里云数据库如何单表恢复
吃鸡的端游和手游在一个服务器吗
嘉兴第三方网络技术多少钱
张小豆手机版服务器
物联网网络协议和网络技术
培训机构做互联网软件开发
品牌网络技术服务信息推荐
服务器接电瓶供电
迟恩宇网络安全与防护说课
p16怎么安装mysql数据库
服务器主板开机接线
数据库应用系统技术刘晓强答案
网络安全法诈骗宣传
服务器怎样设置不能关机
电脑服务器换cpu
软件开发项目组长
gtamc服务器
创造模式服务器怎样才可以加入
广州市天河区软件开发公司
查看数据库表格的软件
智能选股票软件开发源码
跨国公司数据库购买
如何登录锐捷服务器管理界面
服务器测试流程
心脏移植数据库
初学者怎么设计数据库
方舟70人服务器多少钱
互联网基础数据库应用系统
a软件开发工程师的种类
汉特网络技术有限公司