DDR爱好者之家 Design By 杰米
当今最火的莫过于用Python写出捕鱼达人的效果了。啥都不用说,亮代码~~~
# coding:utf-8
# 导入模块
import pygame,sys,time,random
from pygame.locals import *
# 初始化pygame环境
pygame.init()
# 创建一个长宽分别为800/480的窗口
canvas = pygame.display.set_mode((800,480))
canvas.fill((255,255,255))
# 设置窗口标题
pygame.display.set_caption('捕鱼达人')
# 加载图片
bg = pygame.image.load("./images/bg.jpg")
fish1 = pygame.image.load("./images/fish1_0.png")
fish2 = pygame.image.load("./images/fish2_0.png")
fish3 = pygame.image.load("./images/fish3_0.png")
fish4 = pygame.image.load("./images/fish4_0.png")
fish5 = pygame.image.load("./images/fish5_0.png")
fish6 = pygame.image.load("./images/fish6_0.png")
fish7 = pygame.image.load("./images/fish7_0.png")
fish8 = pygame.image.load("./images/fish8_0.png")
fish9 = pygame.image.load("./images/fish9_0.png")
fish10 = pygame.image.load("./images/fish10_0.png")
fish11 = pygame.image.load("./images/fish11_0.png")
net = pygame.image.load("./images/net.png")
gameover = pygame.image.load("./images/gameover.jpg")
# 定义事件监听函数
def handleEvent():
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
# 添加鼠标移动事件,让鼠标控制网的移动
if event.type == MOUSEMOTION:
Game.net.x = event.pos[0] - Game.net.width/2
Game.net.y = event.pos[1] - Game.net.height/2
# 定义时间间隔判断函数
def isActionTime(lastTime,interval):
if lastTime == 0:
return True
currentTime = time.time()
return currentTime - lastTime >= interval
# 定义鱼类
class Fish():
def __init__(self,width,height,y,img):
self.width = width
self.height = height
self.x = 800 - self.width
self.y = y
self.img = img
def paint(self):
canvas.blit(self.img,(self.x,self.y))
def step(self):
self.x -= 10
# 定义网类
class Net():
def __init__(self,x,y):
self.x = x
self.y = y
self.width = 160
self.height = 160
self.img = net
def paint(self):
canvas.blit(self.img,(self.x,self.y))
# 定义越界函数
def outOfBounds(self):
if self.x <= 0:
self.x = 0
elif self.x >= 800 - self.width:
self.x = 800 - self.width
elif self.y <= 0:
self.y = 0
elif self.y >= 480 - self.height:
self.y = 480 - self.height
# 定义碰撞函数
def hit(self,c):
return c.x > self.x - c.width and c.x < self.x + self.width and c.y > self.y - c.height and c.y < self.y + self.height
# 定义存储游戏数据的类
class Game():
# 游戏状态
state = 'RUNNING'
# 鱼的列表
fish = []
# 网的对象
net = Net(100,100)
# 分数
score = 0
# 时间
t = 60
n = 1
# 上一次时间
lastTime = 0
# 时间间隔
interval = 0.5
# 所有鱼的宽高
fish_pos = [[22,13],[50,48],[55,55],[73,73],[104,80],[60,60],[93,93],[94,81],[99,103],[180,140],[320,206],[100,96]]
# 定义产生鱼的函数
def conEnter():
if not isActionTime(Game.lastTime,Game.interval):
return
Game.lastTime = time.time()
r = random.randint(1,11)
if Game.t <= 60:
Game.fish.append(Fish(Game.fish_pos[r][0],Game.fish_pos[r][1],random.randint(0,480 - Game.fish_pos[r][1]),pygame.image.load("./images/fish"+str(r)+"_0.png")))
elif Game.t <= 30:
Game.fish.append(Fish(Game.fish_pos[r][0],Game.fish_pos[r][1],random.randint(0,480 - Game.fish_pos[r][1]),pygame.image.load("./images/fish"+str(r)+"_0.png")))
Game.fish.append(Fish(Game.fish_pos[r][0],Game.fish_pos[r][1],random.randint(0,480 - Game.fish_pos[r][1]),pygame.image.load("./images/fish"+str(r)+"_0.png")))
elif Game.t <= 10:
Game.fish.append(Fish(Game.fish_pos[r][0],Game.fish_pos[r][1],random.randint(0,480 - Game.fish_pos[r][1]),pygame.image.load("./images/fish"+str(r)+"_0.png")))
Game.fish.append(Fish(Game.fish_pos[r][0],Game.fish_pos[r][1],random.randint(0,480 - Game.fish_pos[r][1]),pygame.image.load("./images/fish"+str(r)+"_0.png")))
Game.fish.append(Fish(Game.fish_pos[r][0],Game.fish_pos[r][1],random.randint(0,480 - Game.fish_pos[r][1]),pygame.image.load("./images/fish"+str(r)+"_0.png")))
# 定义画组件函数
def conPaint():
canvas.blit(bg,(0,0))
Game.net.paint()
showScore()
showTime()
for fish in Game.fish:
fish.paint()
# 定义组件移动函数
def conStep():
Game.net.outOfBounds()
for fish in Game.fish:
fish.step()
# 定义碰撞检测函数
def checkHit():
for fish in Game.fish:
if Game.net.hit(fish) and len(Game.fish) != 0:
Game.fish.remove(fish)
Game.score += 1
# 定义绘制分数函数
def showScore():
TextFont = pygame.font.SysFont('SimHei',40)
TextScore = TextFont.render('得分:'+str(Game.score),True,(255,255,255))
canvas.blit(TextScore,(20,20))
# 定义绘制时间函数
def showTime():
TextFont = pygame.font.SysFont('SimHei',40)
TextScore = TextFont.render('剩余时间:'+str(Game.t),True,(255,255,255))
canvas.blit(TextScore,(550,20))
if Game.n % 50 == 1:
Game.t -= 1
Game.n += 1
if Game.t == 0:
Game.state = 'END'
# 定义主控制函数
def control():
if Game.state == 'RUNNING':
conEnter()
conPaint()
conStep()
checkHit()
elif Game.state == 'END':
canvas.blit(gameover,(0,0))
TextFont = pygame.font.SysFont('SimHei',40)
TextScore = TextFont.render('最终得分:'+str(Game.score),True,(0,0,0))
canvas.blit(TextScore,(50,50))
while True:
# 调用主控制函数
control()
# 更新屏幕内容
pygame.display.update()
# 延迟10毫秒
pygame.time.delay(10)
# 监听事件
handleEvent()
这段代码用了一些Python的基础知识,包括事件,定义函数,取余,循环,判断,定义类,创建对象等。这些没什么好说的。导入的几个库也是很常用的库,基本算是程序员必备。把代码摆这里主要是为了让大家借鉴。要是写不出来真是没脸继续写Python了…
大家可以利用我的代码,在做事件监听等函数时应该会方便一些。
图片我发在下面了哈,需要的自取。
源码下载
DDR爱好者之家 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
DDR爱好者之家 Design By 杰米
暂无评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
2025年10月26日
2025年10月26日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]