总目标:实现大鱼吃小鱼游戏

功能概括

  1. 鼠标控制鱼的游动:运动方向的改变和鱼头朝向(即图片旋转角度)的改变。
  2. npc鱼的生命进程:随机从左或右,在随机高度生成随机品种的npc鱼。被吃或游出画面外时内存释放。
  3. 吃鱼:用玩家鱼和npc鱼的间距是否低于某值作为判断标准
# 大鱼吃小鱼import pygame
import random
from pygame.locals import *
from pygame.math import *
from sys import exit# 图片资源加载
background = pygame.image.load("drawable/fishgame/background.png")  # 图片-背景
img_fish = pygame.image.load("drawable/fishgame/thefish.png")       # 图片-玩家操控的鱼
img_small = pygame.image.load("drawable/fishgame/small.png")        # 图片-小鱼
img_middle1 = pygame.image.load("drawable/fishgame/middle1.png")    # 图片-中鱼1
img_middle2 = pygame.image.load("drawable/fishgame/middle2.png")    # 图片-中鱼2
img_big1 = pygame.image.load("drawable/fishgame/big1.png")          # 图片-大鱼1
img_big2 = pygame.image.load("drawable/fishgame/big2.png")          # 图片-大鱼2
img_shark = pygame.image.load("drawable/fishgame/shark.png")        # 图片-鲨鱼# 图片资源处理
new_fish = pygame.transform.rotozoom(img_fish,180,0.2)       # 图片旋转180°,并缩放为原来的0.2倍new_small1 = pygame.transform.rotozoom(img_small,180,0.18)   # 图片旋转180°,缩放为原来的0.18倍。并生成水平翻转的图片2
new_small2 = pygame.transform.rotozoom(img_small,0,0.18)new_middle12 = pygame.transform.rotozoom(img_middle1,0,0.35) # 图片旋转180°,缩放为原来的0.35倍。并生成水平翻转的图片2
new_middle11 = pygame.transform.flip(new_middle12,1,0)
new_middle22 = pygame.transform.rotozoom(img_middle2,0,0.35)
new_middle21 = pygame.transform.flip(new_middle22,1,0)new_big12 = pygame.transform.rotozoom(img_big1,0,0.6)
new_big11 = pygame.transform.flip(new_big12,1,0)
new_big22 = pygame.transform.rotozoom(img_big2,0,0.6)
new_big21 = pygame.transform.flip(new_big22,1,0)new_shark1 = pygame.transform.rotozoom(img_shark,0,1.2)
new_shark2 = pygame.transform.flip(new_shark1,1,0)pygame.init()                                        # 启动screen = pygame.display.set_mode((1000, 500), 0, 0)  # 设置屏幕
pygame.display.set_caption("大鱼吃小鱼21.10.5")        # 设置标题
clock = pygame.time.Clock()                          # 设置时钟sp = Vector2(480,240)          # 小鱼坐标为二维向量sp
speed = 3.0                    # 速度为三个单位
mouse_xy = (480,240)
distanse = Vector2(0,0)
fish_dir = Vector2(-1,0)
time_i=0
fish_list=[] #四维数组:x,y,方向,品种
npc_fish=[]while True:clock.tick_busy_loop(60)time_i=time_i+1screen.blit(background, (0, 0))  # 背景图片if time_i%100 == 0:ram_num1=random.randint(0,1)  # 左右随机数ram_num2=random.randint(1,20)  # 品种随机数:smal-12,midle-5,big-2,shark-1if ram_num1 == 1:npc_fish.append("left")else:npc_fish.append("right")if ram_num2 == 1:npc_fish.append("shark")elif ram_num2 >= 2 | ram_num2 <= 3:npc_fish.append("big1")elif ram_num2 >= 4 | ram_num2 <= 5:npc_fish.append("big2")elif ram_num2 >= 6 | ram_num2 <= 8:npc_fish.append("middle1")elif ram_num2 >= 9 | ram_num2 <= 11 :npc_fish.append("middle2")else:npc_fish.append("small")if npc_fish[0]=="left":npc_fish.append(0)else:npc_fish.append(1000)npc_fish.append(random.randint(0,380))fish_list.append(npc_fish)print(npc_fish)npc_fish=[]for fish in fish_list:if fish[1] == "small":if fish[0] == "left":screen.blit(new_small1,(fish[2],fish[3]))else:screen.blit(new_small2,(fish[2],fish[3]))if fish[1] == "middle1":if fish[0] == "left":screen.blit(new_middle11,(fish[2],fish[3]))else:screen.blit(new_middle12,(fish[2],fish[3]))if fish[1] == "middle2":if fish[0] == "left":screen.blit(new_middle21,(fish[2],fish[3]))else:screen.blit(new_middle22,(fish[2],fish[3]))if fish[1] == "big1":if fish[0] == "left":screen.blit(new_big11,(fish[2],fish[3]))else:screen.blit(new_big12,(fish[2],fish[3]))if fish[1] == "big2":if fish[0] == "left":screen.blit(new_big21,(fish[2],fish[3]))else:screen.blit(new_big22,(fish[2],fish[3]))if fish[1] == "shark":if fish[0] == "left":screen.blit(new_shark1,(fish[2],fish[3]))else:screen.blit(new_shark2,(fish[2],fish[3]))if fish[0] == "left":fish[2] = fish[2] + 1if fish[2] == 1000:fish_list.remove(fish)else:fish[2] = fish[2] - 1if fish[2] == -200:fish_list.remove(fish)distanse = mouse_xy - spdis_len=distanse.length()if dis_len < speed:mouse_xy=spelif dis_len != 0:distanse.normalize_ip()distanse=distanse*speedsp+=distansefor fish in fish_list:fish_pos=Vector2(fish[2],fish[3])distanse2 = sp - fish_posif distanse2.length() <= 100:img_fish = pygame.transform.rotozoom(img_fish,0,1.1)fish_list.remove(fish)for event in pygame.event.get():if event.type == MOUSEBUTTONDOWN:mouse_xy=Vector2(event.pos)distanse = mouse_xy - spangle = distanse.angle_to(fish_dir)new_fish = pygame.transform.rotozoom(img_fish,angle,0.2)if event.type == QUIT:exit()screen.blit(new_fish, sp)  pygame.display.update()

效果:

感言:这是我第一次做出一个小游戏,虽然还有很多很多不足,但挺有成就感的。

python小游戏1:大鱼吃小鱼相关推荐

  1. python编的俄罗斯方块游戏_手把手制作Python小游戏:俄罗斯方块(一)

    手把手制作Python小游戏:俄罗斯方块1 大家好,新手第一次写文章,请多多指教 A.准备工作: 这里我们运用的是Pygame库,因为Python没有内置,所以需要下载 如果没有pygame,可以到官 ...

  2. python简单小游戏代码_一个简单的python小游戏---七彩同心圆

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理 用pygame做一个简单的python小游戏-七彩同心圆 玩法:每次点击鼠标时,会以鼠标为圆心,不断 ...

  3. python图形小游戏代码_手把手制作Python小游戏:俄罗斯方块(一)

    手把手制作Python小游戏:俄罗斯方块1 大家好,新手第一次写文章,请多多指教 A.准备工作: 这里我们运用的是Pygame库,因为Python没有内置,所以需要下载 如果没有pygame,可以到官 ...

  4. python小游戏之三

    猜拳游戏 Python代码实现猜拳小游戏 Python代码实现猜拳小游戏_zhangtongyuan0909的博客-CSDN博客_python猜拳游戏代码 用python中类与对象写一个猜拳游戏 用p ...

  5. python小游戏-16行代码实现3D撞球小游戏!-源码下载

    python小游戏-16行代码实现3D撞球小游戏!-源码下载 所属网站分类: 资源下载 > python小游戏 作者:搞笑 链接: http://www.pythonheidong.com/bl ...

  6. python小游戏编程arcade----坦克动画图片合成

    python小游戏编程arcade----坦克动画图片合成 前言 坦克动画图片合成 1.PIL image 1.1 读取文件并转换 1.2 裁切,粘贴 1.3 效果图 1.4 代码实现 2.处理图片的 ...

  7. 用pygame做一个简单的python小游戏---贪吃蛇

    用pygame做一个简单的python小游戏-贪吃蛇 贪吃蛇游戏博客链接:(方法一样,语言不一样) c++贪吃蛇:https://blog.csdn.net/weixin_46791942/artic ...

  8. 用pygame做一个简单的python小游戏---七彩同心圆

    用pygame做一个简单的python小游戏-七彩同心圆 这个小游戏原是我同学python课的课后作业,并不是很难,就简单实现了一下,顺便加强一下pygame库的学习. 玩法:每次点击鼠标时,会以鼠标 ...

  9. 用pygame做一个简单的python小游戏---生命游戏

    用pygame做一个简单的python小游戏-生命游戏 生命游戏(Game of Life) 生命游戏(Game of Life)是剑桥大学约翰·何顿·康威(John Horton Conway)教授 ...

  10. Python小游戏——王校长的S8冠军奖杯【下】

    [前情提要] 1.pygame的安装:https://blog.csdn.net/Xiaomo_haa/article/details/83962300 2.Python小游戏--王校长的S8冠军奖杯 ...

最新文章

  1. EfficientNetV2 笔记
  2. CNN for Semantic Segmentation(语义分割,论文,代码,数据集,标注工具,blog)
  3. 简单排序--冒泡排序
  4. 自动化测试pytest测试框架实例
  5. python中re怎么念_Python中re(正则表达式)模块学习
  6. 如何获取foreach循环当前迭代的索引?
  7. Asp.net Web Api 路由 和 异常处理
  8. HDU 6188 2017广西邀请赛:Duizi and Shunzi
  9. 国庆在家太无聊, 用Java爬了上千张小姐姐照片...
  10. Windows应用程序组成及编程步骤
  11. Arcgis for Js实现graphiclayer的空间查询(续)
  12. 关于指针的一些基本常识
  13. JMM(Java内存模型)详解
  14. 服务器数据收发测试软件,sokit TCP/UDP 数据包收发测试(调试)工具(Win32)
  15. Cts框架解析(19)-设备状态的分类以及恢复模式的分类
  16. css before 箭头,伪元素beforeafter以及制作三角箭头
  17. 主梁弹性模量计算_各排立杆传至梁上荷载标准值、设计值是那一个数据
  18. windows下 利用CoreAudio,Libmad,和3D环绕音效原理实现的MP3播放器
  19. FCPX插件:视频去闪烁插件DEFlicker安装教程
  20. python输入n个数、输出最小的数字_程序查找最少的斐波纳契数以在Python中加到n?...

热门文章

  1. 电脑C盘怎么清理到最干净
  2. UltraEdit编辑器无法使用快捷键全选ctrl+a功能失效解决办法
  3. c语言中switch0,C语言switch0.ppt
  4. inline-block元素高度为0,父级仍被撑起,问题元凶—strut
  5. App Tamer for Mac
  6. 苹果严打iMessage垃圾短信
  7. 【异常处理】The CXX compiler identification is unknown
  8. 服务器通过ilo安装系统,如何通过ilo开启服务器远程桌面
  9. 固定资产盘点常用的方法,你了解多少?
  10. DDD领域驱动设计笔记