開源pos機驅動源碼,Python實現的flappy bird游戲

 新聞資訊  |   2023-04-13 10:25  |  投稿人:pos機之家

網上有很多關于開源pos機驅動源碼,Python實現的flappy bird游戲的知識,也有很多人為大家解答關于開源pos機驅動源碼的問題,今天pos機之家(www.tonybus.com)為大家整理了關于這方面的知識,讓我們一起來看下吧!

本文目錄一覽:

1、開源pos機驅動源碼

開源pos機驅動源碼

前文

相信大家肯定玩過或見過這個游戲,我之前也一直在手機上玩flappy bird游戲,閑暇時間就編寫了一個

是采用python3+pygame模塊制作而成的,運行效果非常流暢,會讓你大吃一驚哦!^_^

一、運行效果展示

下載游戲之后,注意在自己的python環境中安裝pygame模塊,如果沒有安裝可以使用pip install pygame 進行安裝

然后使用使用命令運行起這個.py文件,運行之后的第一個界面效果如下,是不是很酷炫

當點擊上圖中的“Play”按鈕之后的效果如下:

運行之后是有音樂的,大家可以下載代碼的時候一起將素材下載,這樣就在運行時就能聽到音樂

二、完整代碼

下面代碼用到了素材(背景圖片,音樂等,下載地址:https://docs.qq.com/doc/DYUhqVEJ0d013alVC)

1 import math 2 import os 3 import time 4 from random import randint 5 from random import uniform 6 import pygame 7 from pygame.locals import * #導入一些常用的變量 8 from collections import deque#加入了隊列 9 10 FPS = 60 11 BK_width="360px",height="auto" />

level = 4#石頭出現的等級 35 36 BUTTON_width="360px",height="auto" />

display.set_mode((BK_width="360px",height="auto" />

Sound("lose.wav") 50 music1 = pygame.mixer.Sound("touch.wav") 51 pygame.mixer.music.load("bkm.mp3") 52 font = pygame.font.SysFont('comicsansms', 25) 53 54 55 #用于設置鳥的種類 56 def little_bird(list): 57 global a_i 58 global b_i 59 global c_i 60 a_i=list[0] 61 b_i=list[1] 62 c_i=list[2] 63 64 65 #用于設置關卡難度 66 def seteasy(list): 67 global BK_MOVE_SPEED # 背景每毫秒移動的速度 就是柱子移動的速度 68 global ADD_TIME # 每隔多少毫秒就增加一個柱子 69 global TOTAL_PIPE_BODY # 像素值必須為整數 占窗口的3/5 70 global PIPE_RATE 71 global STONE_LEVEL # 鳥出現的等 72 global BIRD_INIT_SCORE 73 74 BK_MOVE_SPEED = list[0] # 背景每毫秒移動的速度 75 ADD_TIME = list[1] # 每隔多少毫秒就增加一個柱子 76 TOTAL_PIPE_BODY =list[2] # 像素值必須為整數 占窗口的3/5 77 PIPE_RATE = list[3] 78 Pipe.add_time = list[1] 79 BIRD_INIT_SCORE = list[4] 80 STONE_LEVEL = list[5] 81 82 83 #子彈類 84 class Bullet(pygame.sprite.Sprite): 85 speed = BULLET_SPEED 86 width="360px",height="auto" />

rect(self.x,self.y,Bird.width="360px",height="auto" />

png')#加載背景圖像259 def load_images():260 #加載所有游戲需要用到的圖像261 #上面寫了這個函數下面就用了起來 join用于分隔符和元組的拼接 os.path.join 用于路徑的順序拼接262 return {'bk1': load_image('background.png'),263 'bk2':load_image("background2.png"),264 "bk3":load_image("background3.png"),265 "bk4":load_image("background4.png"),266 "bk5":load_image("background5.png"),267 "bk6":load_image("background6.png"),268 'stone':load_image('stone.png'),269 'bullet': load_image('bullet.png'),270 'pipe-end': load_image('pipe_end.png'),271 'pipe-body': load_image('pipe_body.png'),272 'f_u': load_image('fenghuang_up.png'),273 'f_m': load_image('fenghuang_mid.png'),274 'f_w': load_image('fenghuang_down.png'),275 'bird-wingup': load_image('bird_wing_up.png'),276 'bird-wingmid': load_image('bird_wing_mid.png'),277 'bird-wingdown': load_image('bird_wing_down.png')}278 279 def frames_to_msec(frames,fps=FPS):280 return 1000.0*frames/fps #難道限制的意思就是我可以限制圖片出來的時間281 282 def msec_to_frames(milliseconds, fps=FPS):283 return fps * milliseconds / 1000.0#轉化成對應的幀數284 #轉化成每秒的相應的幀數285 286 287 def game_loop():288 pygame.mixer.music.play(-1)289 pygame.display.set_caption("Flappy Bird")290 clock = pygame.time.Clock()#創建一個時鐘對象291 images = load_images()#建立所有需要的圖像字典292 293 bird = Bird(20,BK_HEIGHT//2,1,(images[a_i],images[b_i] ,images[c_i]))294 score_font = pygame.font.SysFont(None,50,bold=True)#名字 大小 粗體 建立畫筆 用于記錄 分數295 score_font2 = pygame.font.SysFont(None, 40, bold=True) # 名字 大小 粗體 建立畫筆 用于記錄 分數296 score_font3 = pygame.font.SysFont(None, 70, bold=True) # 名字 大小 粗體 建立畫筆 用于記錄 分數297 pipes = deque()298 299 stones =pygame.sprite.Group()#將石頭新建為一個精靈組300 bullets =pygame.sprite.Group()#將子彈新建為一個精靈組301 302 pause = done = False303 frames=0304 305 while not done :#當沒有按下中止鍵306 clock.tick(FPS)307 if not (pause or frames%msec_to_frames(Pipe.add_time)):#如果沒有按下暫停 或者滿足新生成柱子的條件308 pp=Pipe(images['pipe-end'], images['pipe-body'])309 pipes.append(pp)#生成新管子 并加入隊列310 311 if not (pause or frames%msec_to_frames(Stone.add_time)or bird.level<STONE_LEVEL):312 ss = Stone(images["stone"])313 stones.add(ss) #加入新生成的石頭314 315 #判斷發生了什么事件進行相應的處理316 for e in pygame.event.get():317 if e.type == QUIT:318 done = True319 break320 elif e.type == KEYUP :321 if e.key == K_p:322 pause = not pause323 elif e.key ==K_d:#發射子彈324 bb=Bullet(bird,images["bullet"])325 bullets.add(bb)326 elif e.key ==K_s or e.key == K_SPACE:327 bird.inital_speed = INITAL_SPEED328 329 330 elif e.type == MOUSEBUTTONUP:331 bird.inital_speed =INITAL_SPEED332 333 # 重新更新時間334 # 使小鳥又進入相應的運動的開始335 if pause:336 continue # 這個時段什么都不做337 338 pygame.sprite.groupcollide(stones,bullets,True,True,pygame.sprite.collide_mask)339 pipe_collision = any(p.collides(bird) for p in pipes)340 stone_collision = any(s.collides(bird) for s in stones)341 342 if pipe_collision:343 pygame.mixer.music.stop()344 done = True345 pygame.mixer.Sound.play(music_lose, -1)346 time.sleep(3.5)347 pygame.mixer.Sound.stop(music_lose)348 time.sleep(0.1)349 350 if stone_collision:351 pygame.mixer.music.stop()352 pygame.mixer.Sound.play(music_lose, -1)353 time.sleep(3.5)354 pygame.mixer.Sound.stop(music_lose)355 time.sleep(0.1)356 done = True357 if 0>=bird.y or bird.y>BK_HEIGHT-Bird.height:358 done = True359 pygame.mixer.music.stop()360 pygame.mixer.Sound.play(music_lose, -1)361 time.sleep(3.5)362 pygame.mixer.Sound.stop(music_lose)363 time.sleep(0.1)364 365 366 screen.blit(images[search_bk(bird)], (0, 0))#畫背景墻 這種是分開兩張的367 368 while pipes and not pipes[0].visible:369 pipes.popleft()#當隊列不為空 且管子 0 已經不可見的時候370 for s in stones:#刪除看不見的石頭371 if not s.visible():372 del s373 for b in bullets:#刪除看不見的子彈374 if not b.visible():375 del b376 377 378 for p in pipes:379 p.update()380 screen.blit(p.image,p.rect)#在指定的位置 畫柱子381 for s in stones:382 s.update()383 screen.blit(s.image,s.rect)384 385 for b in bullets:386 b.update()387 screen.blit(b.bullet,b.rect)388 389 for p in pipes:390 if bird.x>p.x+Pipe.width="360px",height="auto" />

上述代碼是第1版本,簡單起見 沒有完全封裝為面向對象,等后面有時間再進行完善 目標是:全部用類進行分裝,然后拆分到多個模塊中

總結

歡迎大家指出不足,或者你有更好的建議,可以寫在評論區一起交流。

最后,有需要這個實例所有文件的可以點擊下面的鏈接:)

https://docs.qq.com/doc/DYUhqVEJ0d013alVC

以上就是關于開源pos機驅動源碼,Python實現的flappy bird游戲的知識,后面我們會繼續為大家整理關于開源pos機驅動源碼的知識,希望能夠幫助到大家!

轉發請帶上網址:http://www.tonybus.com/news/17896.html

你可能會喜歡:

版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 babsan@163.com 舉報,一經查實,本站將立刻刪除。