Python Pygame如何实现水果忍者游戏
发表于:2024-11-19 作者:千家信息网编辑
千家信息网最后更新 2024年11月19日,这篇文章给大家分享的是有关Python Pygame如何实现水果忍者游戏的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、准备中1.0 游戏规则Python版本的水果忍者小
千家信息网最后更新 2024年11月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安全错误
数据库的锁怎样保障安全
网络安全生产标准化
网络安全保卫分队
网络安全审核员自述
新沂市网络安全民警
浙江永康临床试验数据库
中心化存储网络技术
新零售产品信息数据库系统
学软件开发怎么找工作
代号 探戈 数据库
运营商的网络安全
巴南小学网络安全培训机构
电力行业日志审计服务器收费
移动电商app软件开发怎么收费
中国美国互联网科技
古鳌科技互联网金融
网络安全教育黑板报字体
服务器暴露外网安全
深圳达农互联网科技股份cio
中华人民共和国网络安全教育法
互联网科技2018
南京邮电大学网络安全考研
网络安全语录100句
网络安全征文带标题
微信商户api证书放在服务器
网络安全法的四大主体国家
深圳互联网科技产品有哪些
黑客网络安全综艺
沈河区服务好的软件开发价格
电脑软件开发需要什么知识
安徽兴博远实软件开发公司