电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Python寫捕魚達人的游戲實現

瀏覽:121日期:2022-07-31 16:00:14

當今最火的莫過于用Python寫出捕魚達人的效果了。啥都不用說,亮代碼~~~

# coding:utf-8# 導入模塊import pygame,sys,time,randomfrom 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了…

大家可以利用我的代碼,在做事件監聽等函數時應該會方便一些。

圖片我發在下面了哈,需要的自取。

源碼下載

到此這篇關于Python寫捕魚達人的游戲實現的文章就介紹到這了,更多相關Python 捕魚達人內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: SDI车窗夹力测试仪-KEMKRAFT方向盘测试仪-上海爱泽工业设备有限公司 | 吨袋包装机|吨包秤|吨包机|集装袋包装机-烟台华恩科技 | 优宝-汽车润滑脂-轴承润滑脂-高温齿轮润滑油脂厂家 | 步进驱动器「一体化」步进电机品牌厂家-一体式步进驱动 | 长沙中央空调维修,中央空调清洗维保,空气能热水工程,价格,公司就找维小保-湖南维小保环保科技有限公司 | 牛奶检测仪-乳成分分析仪-北京海谊 | 冷凝锅炉_燃气锅炉_工业燃气锅炉改造厂家-北京科诺锅炉 | 防爆电机_防爆电机型号_河南省南洋防爆电机有限公司 | 福州仿石漆加盟_福建仿石漆厂家-外墙仿石漆加盟推荐铁壁金钢(福建)新材料科技有限公司有保障 | 车间除尘设备,VOCs废气处理,工业涂装流水线,伸缩式喷漆房,自动喷砂房,沸石转轮浓缩吸附,机器人喷粉线-山东创杰智慧 | 魔方网-培训咨询服务平台| PE一体化污水处理设备_地埋式生活污水净化槽定制厂家-岩康塑业 | 仪器仪表网 - 永久免费的b2b电子商务平台 | 高硼硅玻璃|水位计玻璃板|光学三棱镜-邯郸奥维玻璃科技有限公司 高温高压釜(氢化反应釜)百科 | 泰兴市热钻机械有限公司-热熔钻孔机-数控热熔钻-热熔钻孔攻牙一体机 | 货车视频监控,油管家,货车油管家-淄博世纪锐行电子科技 | 油缸定制-液压油缸厂家-无锡大鸿液压气动成套有限公司 | 安全光栅|射频导纳物位开关|音叉料位计|雷达液位计|两级跑偏开关|双向拉绳开关-山东卓信机械有限公司 | 中医治疗皮肤病_潍坊银康医院「山东」重症皮肤病救治平台 | 海外仓系统|国际货代系统|退货换标系统|WMS仓储系统|海豚云 | 生物制药洁净车间-GMP车间净化工程-食品净化厂房-杭州波涛净化设备工程有限公司 | Trimos测长机_测高仪_TESA_mahr,WYLER水平仪,PWB对刀仪-德瑞华测量技术(苏州)有限公司 | 无锡网站建设-做网站-建网站-网页设计制作-阿凡达建站公司 | 网架支座@球铰支座@钢结构支座@成品支座厂家@万向滑动支座_桥兴工程橡胶有限公司 | 长春网站建设,五合一网站设计制作,免费优化推广-长春网站建设 | 无菌实验室规划装修设计-一体化实验室承包-北京洁净净化工程建设施工-北京航天科恩实验室装备工程技术有限公司 | 起好名字_取个好名字_好名网免费取好名在线打分 | DDoS安全防护官网-领先的DDoS安全防护服务商 | 专注提供国外机电设备及配件-工业控制领域一站式服务商-深圳市华联欧国际贸易有限公司 | 沥青车辙成型机-车托式混凝土取芯机-混凝土塑料试模|鑫高仪器 | 多功能真空滤油机_润滑油全自动滤油机_高效真空滤油机价格-重庆润华通驰 | 智能汉显全自动量热仪_微机全自动胶质层指数测定仪-鹤壁市科达仪器仪表有限公司 | 恒温恒湿箱(药品/保健品/食品/半导体/细菌)-兰贝石(北京)科技有限公司 | 江苏全风,高压风机,全风环保风机,全风环形高压风机,防爆高压风机厂家-江苏全风环保科技有限公司(官网) | 一点车讯-汽车网站,每天一点最新车讯! | 高精度电阻回路测试仪-回路直流电阻测试仪-武汉特高压电力科技有限公司 | YJLV22铝芯铠装电缆-MYPTJ矿用高压橡套电缆-天津市电缆总厂 | 昆明网络公司|云南网络公司|昆明网站建设公司|昆明网页设计|云南网站制作|新媒体运营公司|APP开发|小程序研发|尽在昆明奥远科技有限公司 | 河南凯邦机械制造有限公司 | 智能气瓶柜(大型气瓶储存柜)百科| 工装定制/做厂家/公司_工装订做/制价格/费用-北京圣达信工装 |