广告
返回顶部
首页 > 资讯 > 后端开发 > Python >利用Python写了一个水果忍者小游戏
  • 952
分享到

利用Python写了一个水果忍者小游戏

2024-04-02 19:04:59 952人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录前言:一、需要导入的包二、窗口界面设置三、随机生成水果位置四、绘制字体五、玩家生命的提示六、游戏开始与结束的画面七、游戏主循环最后前言: 水果忍者到家都玩过吧,但是python写

前言:

水果忍者到家都玩过吧,但是python写的水果忍者你肯定没有玩过。今天就给你表演一个新的,用Python写一个水果忍者。水果忍者的玩法很简单,尽可能的切开抛出的水果就行。

今天就用python简单的模拟一下这个游戏。在这个简单的项目中,我们用鼠标选择水果来切割,同时炸弹也会隐藏在水果中,如果切开了三次炸弹,玩家就会失败。

一、需要导入的包

import pygame, sys
import os
import random

二、窗口界面设置

# 游戏窗口
WIDTH = 800
HEIGHT = 500
FPS = 15             # gameDisplay的帧率,1/12秒刷新一次
pygame.init()
pygame.display.set_caption('水果忍者') # 标题
gameDisplay = pygame.display.set_mode((WIDTH, HEIGHT)) # 固定窗口大小
clock = pygame.time.Clock()
# 用到的颜色
WHITE = (255,255,255)
BLACK = (0,0,0)
RED = (255,0,0)
GREEN = (0,255,0)
BLUE = (0,0,255)

background = pygame.image.load('背景.jpg') # 背景
font = pygame.font.Font(os.path.join(os.getcwd(), 'comic.ttf'), 42) # 字体
score_text = font.render('Score : ' + str(score), True, (255, 255, 255)) # 得分字体样式

三、随机生成水果位置

def generate_random_fruits(fruit):
fruit_path = "images/" + fruit + ".png"
data[fruit] = {
'img': pygame.image.load(fruit_path),
 'x' : random.randint(100,500),
 'y' : 800,
'speed_x': random.randint(-10,10),
'speed_y': random.randint(-80, -60),
 'throw': False,
 't': 0,
'hit': False,
 }
if random.random() >= 0.75:
data[fruit]['throw'] = True
else:
data[fruit]['throw'] = False
data = {}
for fruit in fruits:
generate_random_fruits(fruit)

 

•这个函数用于随机生成水果和保存水果的数据

•'x’和’y’存储水果在x坐标和y坐标上的位置。

•Speed_x和speed_y是存储水果在x和y方向的移动速度。它也控制水果的对角线移动。

•throw,用于判断生成的水果坐标是否在游戏之外。如果在外面,那么将被丢弃。

•data字典用于存放随机生成的水果的数据。

四、绘制字体

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)

•Draw_text函数可以在屏幕上绘制文字。

•get_rect() 返回 Rect 对象。

•X和y是X方向和Y方向的位置。

•blit()在屏幕上的指定位置绘制图像或写入文字。

五、玩家生命的提示

# 绘制玩家的生命
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)

def hide_cross_lives(x, y):
gameDisplay.blit(pygame.image.load("images/red_lives.png"), (x, y))

 

•img_rect获取十字图标的(x,y)坐标(位于最右上方)

•img_rect .x 设置下一个十字图标距离前一个图标35像素。

•img_rect.y负责确定十字图标从屏幕顶部开始的位置。

•另外,搜索公众号linux就该这样学后台回复“git书籍”,获取一份惊喜礼包。

六、游戏开始与结束的画面

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 a key to begin!", 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

•show_gameover_screen()函数显示初始游戏画面和游戏结束画面。

•pygame.display.flip()将只更新屏幕的一部分,但如果没有参数传递,则会更新整个屏幕。

•pygame.event.get()将返回存储在pygame事件队列中的所有事件。

•如果事件类型等于quit,那么pygame将退出。

•event.KEYUP事件,当按键被按下和释放时发生的事件。

七、游戏主循环

first_round = True
game_over = True        
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']
      value['y'] += value['speed_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:
                  elif player_lives == 1 :
                      hide_cross_lives(725, 15)
                   elif player_lives == 2 :
                      hide_cross_lives(760, 15)
                  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()

•这是游戏的主循环

•如果超过3个炸弹被切掉,game_over终止游戏,同时循环。

•game_running 用于管理游戏循环。

•如果事件类型是退出,那么游戏窗口将被关闭。

•在这个游戏循环中,我们动态显示屏幕内的水果。

•如果一个水果没有被切开,那么它将不会发生任何事情。如果水果被切开,那么一个半切开的水果图像应该出现在该水果的地方

•如果用户点击了三次炸弹,将显示GAME OVER信息,并重置窗口。

•clock.tick()将保持循环以正确的速度运行。循环应该在每1/12秒后更新一次

最后

大家都动手玩起来,这个小游戏还是特别不错的,看看谁的手速快

到此这篇关于利用Python写了一个水果忍者小游戏的文章就介绍到这了,更多相关Python水果忍者内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 利用Python写了一个水果忍者小游戏

本文链接: https://www.lsjlt.com/news/117810.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 利用Python写了一个水果忍者小游戏
    目录前言:一、需要导入的包二、窗口界面设置三、随机生成水果位置四、绘制字体五、玩家生命的提示六、游戏开始与结束的画面七、游戏主循环最后前言: 水果忍者到家都玩过吧,但是Python写...
    99+
    2022-11-11
  • 教你用Python写一个水果忍者小游戏
    目录引言一、需要导入的包二、窗口界面设置  三、随机生成水果位置    四、绘制字体  五、玩家生命的提示六、游戏开始与结束的画面  ...
    99+
    2022-11-13
  • 利用java编写一个弹球小游戏
    本篇文章给大家分享的是有关利用java编写一个弹球小游戏,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。弹球游戏实现原理:  隔一定时间(小于1秒)重新绘制图像,因为Graphi...
    99+
    2023-05-31
    java ava
  • 一口气用Python写了13个小游戏(附源码)
    今天给大家分享13个游戏源码,可以自己复现玩玩,研究下里面的编程逻辑,对学习编程(特别是初学者)应该会有很大帮助。 1、吃金币 源码分享: import osimport cfgimport sysimport pygameimpo...
    99+
    2023-09-22
    python pygame 开发语言
  • Python利用3D引擎写一个Pong游戏
    目录前言实现方法完整代码前言 之前,我们用pygame做了一个2D的Pong游戏,今天我们做一个3D的,游戏画面如下: 用ad和←→操作,双人对战 实现该效果我...
    99+
    2023-01-05
    Python 3D Pong游戏 Python Pong游戏 Python 游戏
  • Python利用物理引擎Pymunk编写一个解压小游戏
    用鼠标创建小球,一个蹦来蹦去的解压小游戏……  本次需要的外置包:pygame,pymunk,cmd运行该命令安装: pip install ...
    99+
    2023-01-04
    Python Pymunk解压游戏 Python 解压游戏 Python Pymunk
  • 利用Python编写一个记忆翻牌游戏
    目录导语开发工具环境搭建先睹为快原理简介导语 昨天看到有留言竟然说我是月更博主,我明明更新地这么勤快(心虚.jpg)。看吧,昨天刚更新过,今天又来更新了。 今天还是带大家写个小游戏吧...
    99+
    2022-11-13
  • 用Python写一个无界面的2048小游戏
    以前游戏2048火的时候,正好用其他的语言编写了一个,现在学习python,正好想起来,便决定用python写一个2048,由于没学过python里面的界面编程,所以写了一个极其简单的无界面2048。游戏2...
    99+
    2022-06-04
    小游戏 界面 Python
  • 利用c++写一个简单的推箱子小游戏
    效果图 相信各位都肯定完整这种推箱子的小游戏。游戏玩法很简单,那就是一个人把所有的箱子推动到对应的位置那就可以赢了。 那么我们接下来看看这个推箱子的游戏改怎么写 char ma...
    99+
    2022-11-12
  • 利用Java编写一个俄罗斯方块小游戏
    这期内容当中小编将会给大家带来有关利用Java编写一个俄罗斯方块小游戏,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Java游戏俄罗斯方块的实现实例    &nbs...
    99+
    2023-05-31
    java ava
  • 怎么在Python中利用Pycharm编写一个猴子摘桃小游戏
    怎么在Python中利用Pycharm编写一个猴子摘桃小游戏?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。源码及注释:import pygamefrom ...
    99+
    2023-06-06
  • 如何利用Python编写一个记忆翻牌游戏
    这篇文章主要为大家展示了“如何利用Python编写一个记忆翻牌游戏”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何利用Python编写一个记忆翻牌游戏”这篇文章吧。开发工具Python版本:3...
    99+
    2023-06-29
  • 教你用Python写一个植物大战僵尸小游戏
    目录一、前言二、引入模块三、完整代码四、主程序五、效果演示一、前言 上次写了一个俄罗斯方块,感觉好像大家都看懂了,这次就更新一个植物大战僵尸吧 二、引入模块 import pyg...
    99+
    2022-11-12
  • 怎么用Python编写一个宝石消消乐小游戏
    本篇内容介绍了“怎么用Python编写一个宝石消消乐小游戏”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!开发工具python版本:3.6.4...
    99+
    2023-06-26
  • 如何在python中利用pygame实现一个愤怒的小鸟游戏
    这篇文章将为大家详细讲解有关如何在python中利用pygame实现一个愤怒的小鸟游戏,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。代码展示import pygame,syspyg...
    99+
    2023-06-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作