吃豆人和削蘋果這兩個游戲想必大家都知道吧,本文運用Python里的Pygame控制模塊編寫出一個融合吃豆人+切水果的新手游:玩命吃蘋果,有興趣的話可以認識一下
引言
哈哈哈!木木子今天浮現——早已來給大家看了不少具體內容啦~
涉及到的人工智能、新手、網絡爬蟲、數據統計分析(這一塊的通常但是審批)手機游戲...
PS:
吃豆人我寫過了哈
Python+Pygame實戰之吃豆豆游戲的實現
切水果我寫過了哈
PythonPygame實戰之水果忍者游戲的實現
今天二者集合,做出一款新游戲,哈哈哈,名字叫做《瘋狂????吃水果》小游戲,其實聽著挺????的,但是做出來的效果其實沒有想象中那么高大尚吶!(給你們打個預防針)
本文是基于Pygame寫的一款游戲哈!
一、籌備中
1)游戲的玩法
任意爆出:甜瓜????大大加分、紅提????扣分、定時炸彈????1條血量原始為二。鼠標點擊挪動。加減法考多少分實際就等著大家自己去玩了哈,都劇透了就沒意思了撒!每一次的游戲代碼也給大家留一點兒底,哈哈,自己琢磨嘛~
2)環境安裝
我應用的生活環境:Python3、Pycharm社區版、tkinter、Pygame控制模塊,一部分內置控制模塊不展現。
控制模塊組裝:pipinstall-ihttps://pypi.douban.com/simple/+控制模塊名
3)素材內容提前準備
安排了音樂伴奏更有勁兒啦!還記得seven這首歌曲嘛,還挺好聽。
二、代碼展示
代碼超級多的!僅展示部分
主程序
importtkinter importrandom importtime importParam importImage importBonus importDeduction importBean importBomb importpygame #定義物質列表(包含加分西瓜和消分葡萄和炸彈) bonusth=[] deductionth=[] bigbombs=[] #定義bean變量,保存豆豆對象 bean="" #定義當前用戶的初始分數 score=0 life=2 #定義游戲狀態 game_state=Param.GAME_START #創建窗體 game_window=tkinter.Tk() #窗口文字設置 game_window.title('ILOVEFRUIT') #窗口位置處理 screenwidth=game_window.winfo_screenwidth() screenheight=game_window.winfo_screenheight() size='%dx%d+%d+%d'%(Param.GAME_WIDTH,Param.GAME_HEIGHT,(screenwidth-Param.GAME_WIDTH)/2,50) game_window.geometry(size) #加載游戲用到的所有的圖片 background_image,bean_image,Bonus_image,Bomb_image,Deduction_image=Image.load_image(tkinter) Start,Stop=Image.load_state_image(tkinter) #獲取畫布 window_canvas=tkinter.Canvas(game_window) #畫布包裝方式 window_canvas.pack(expand=tkinter.YES,fill=tkinter.BOTH) #時間標志 count=0 num=30 defcreate_fruit():#生成水果 globalcount globalnum globalscore ifscore%10==1: ifnum>=8: num-=8 count+=1 ifcount%num==0: c=random.randint(1,10) ifc<=5: #加分水果生成 bonus=Bonus.Bonus(Bonus_image) bonusth.append(bonus)#物質添加到列表中 window_canvas.create_image(bonus.x,bonus.y,anchor=tkinter.NW,image=bonus.image,tag=bonus.tag) elifc<=8: #銷分水果生成 deduction=Deduction.Deduction(Deduction_image) deductionth.append(deduction) window_canvas.create_image(deduction.x,deduction.y,anchor=tkinter.NW,image=deduction.image,tag=deduction.tag) else: #炸彈生成 bigbomb=Bomb.BigBomb(Bomb_image) bigbombs.append(bigbomb) window_canvas.create_image(bigbomb.x,bigbomb.y,anchor=tkinter.NW,image=bigbomb.image,tag=bigbomb.tag) defstep_fruit(): #遍歷所有的物質,調用移動的方法 forbonusinbonusth: bonus.step(window_canvas) fordeductionindeductionth: deduction.step(window_canvas) forbigbombinbigbombs: bigbomb.step(window_canvas) defjudge_state(event): globalgame_state ifgame_state==Param.GAME_START: game_state=Param.GAME_RUNNING #畫分 window_canvas.create_text(20,20,text="分數:%d"%(score),anchor=tkinter.NW,fill="white",\ font="time12bold",tag="SCORE") #畫生命 window_canvas.create_text(20,50,text="生命:%d"%(life),anchor=tkinter.NW,fill="white",\ font="time12bold",tag="LIFE") #刪除啟動圖片 window_canvas.delete("Start") elifgame_state==Param.GAME_STOP: window_canvas.delete("bean") window_canvas.delete("STOP") game_state=Param.GAME_START game_start() defbean_move(event): ifgame_state==Param.GAME_RUNNING: now_x=bean.x now_y=bean.y bean.x=event.x-bean.w/2 bean.y=event.y-bean.h/2 window_canvas.move("bean",bean.x-now_x,bean.y-now_y) defout_of_bounds(): #獲取所有物質,判斷是否越界 fordeductionindeductionth: ifdeduction.out_of_bounds(): window_canvas.delete(deduction.tag) deductionth.remove(deduction) forbonusinbonusth: globaloutnum ifbonus.out_of_bounds(): outnum+=1 window_canvas.delete(bonus.tag) bonusth.remove(bonus) ifoutnum>=5: game_state=Param.GAME_STOP #畫游戲結束的狀態 game_over() forbigbombinbigbombs: ifbigbomb.out_of_bounds(): window_canvas.delete(bigbomb.tag) bigbombs.remove(bigbomb) defbomb_action(): globalscore globallife globalbean globalgame_state #加分 forbonusinbonusth: ifbonus.bomb(bean): window_canvas.delete(bonus.tag) bonusth.remove(bonus) score+=3 #減分 fordeductionindeductionth: ifdeduction.bomb(bean): window_canvas.delete(deduction.tag) deductionth.remove(deduction) ifscore-5<0: score=0 game_state=Param.GAME_STOP #畫游戲結束的狀態 game_over() else: score-=5 forbigbombinbigbombs: ifbigbomb.bomb(bean): window_canvas.delete(bigbomb.tag) bigbombs.remove(bigbomb) #如果分數或生命小于0游戲結束 iflife-1<=0: life=0 game_state=Param.GAME_STOP #畫游戲結束的狀態 game_over() else: life-=1 defdraw_action(): #畫分 window_canvas.delete("SCORE") #畫生命 window_canvas.delete("LIFE") window_canvas.create_text(20,20,text="分數:%d"%(score),anchor=tkinter.NW,fill="white",font="time12bold",tag="SCORE") window_canvas.create_text(20,50,text="生命:%d"%(life),anchor=tkinter.NW,fill="white",font="time12bold",tag="LIFE") defgame_over(): globalgame_state game_state=Param.GAME_STOP fordeductionindeductionth: window_canvas.delete(deduction.tag) forbonusinbonusth: window_canvas.delete(bonus.tag) forbigbombinbigbombs: window_canvas.delete(bigbomb.tag) deductionth.clear() bonusth.clear() bigbombs.clear() window_canvas.create_image(0,0,anchor=tkinter.NW,image=Stop,tag="STOP") ifpygame.mixer.music.get_busy()==True: pygame.mixer.music.stop()#停止播放 defgame_start(): globalscore globallife globalnum globaloutnum num=30 score=0 life=2 outnum=0 #畫游戲背景 window_canvas.create_image(0,0,anchor=tkinter.NW,image=background_image,tag="background") #創建豆豆對象 globalbean bean=Bean.Bean(bean_image) window_canvas.create_image(bean.x,bean.y,anchor=tkinter.NW,image=bean.image,tag="bean") window_canvas.create_image(0,0,anchor=tkinter.NW,image=Start,tag="Start") pygame.mixer.init() pygame.mixer.music.load('Seve(鋼琴版).mp3')#加載背景音樂 ifpygame.mixer.music.get_busy()==False: pygame.mixer.music.play(300,0)#重復300次,從第一秒開始播放 defgame(): ifgame_state==Param.GAME_START: game_start() #鼠標監聽 window_canvas.bind("<Motion>",bean_move) window_canvas.bind("<Button-1>",judge_state) whileTrue: ifgame_state==Param.GAME_RUNNING: #物質入場 create_fruit() #物質動起來 step_fruit() #刪除越界的物質 out_of_bounds() #檢測碰撞 bomb_action() ifscore>=0: #畫分和生命 draw_action() #更新顯示 game_window.update() time.sleep(0.04) if__name__=="__main__": game() game_window.mainloop()
三、效果展示
1)游戲界面
2)隨機截圖
3)消耗結束
綜上所述,這篇文章就給大家介紹完畢,希望可以給大家帶來幫助
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/128813.html
小編寫這篇文章的一個主要目的,主要是用來給大家去做個相關的介紹,介紹的內容主要是涉及到相關的游戲實現,比如怎么去做游戲呢?比如說,怎么去做打豆豆的游戲呢?關于這方面的內容,下面就給大家詳細解答下。 序言 前天晚上,玩起了在我們的學生時代經常玩的一些游戲,吃豆豆,但是我發現,在一局游戲當中,我們命的條數是比較少的,我根本不能吃完所有的豆豆,總是被敵人吃掉 于是,我在想怎么能夠保證我達到吃完...
摘要:先看看最后效果圖片的話是從網上小魚兒那個案例里面拿的,實現的功能如下是通過方向鍵操作烏龜,進行吃魚吃魚的時候根據烏龜的坐標和魚的進行檢測,在碰撞區域則干掉這條魚背景音樂和吃魚音樂的播放分數累積魚的平滑游動控制幀頻實現代碼導入一些常用的函數烏 先看看最后效果 圖片的話是從網上小魚兒那個案例里面拿的,實現的功能如下: 是通過方向鍵操作烏龜,進行吃魚 吃魚的時候根據烏龜的x,y坐標和魚的x...
摘要:時間永遠都過得那么快,一晃從年注冊,到現在已經過去了年那些被我藏在收藏夾吃灰的文章,已經太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設置私密了,不收拾不好看呀。 ...
Pydub是1個根據ffmpeg的Python數字音頻處理控制模塊,封裝形式了很多ffmpeg最底層插口,因而用這個方法做歌曲格式轉化會十分方便。今日為大家介紹它歌曲格式轉化作用,基本上適用所有歌曲音頻文件格式,所需要的可以了解一下 Pydub是1個根據ffmpeg的Python數字音頻處理控制模塊,封裝形式了很多ffmpeg最底層插口,因而用這個方法做歌曲格式轉化會十分方便,假如你閱讀文章...
閱讀 919·2023-01-14 11:38
閱讀 891·2023-01-14 11:04
閱讀 750·2023-01-14 10:48
閱讀 2039·2023-01-14 10:34
閱讀 956·2023-01-14 10:24
閱讀 833·2023-01-14 10:18
閱讀 506·2023-01-14 10:09
閱讀 583·2023-01-14 10:02