【pygame遊戲開發】這幾個經典遊戲,勾起了少年的快樂
def GamingInterface(num_player, screen):
# 初始化
pygame.mixer.music.load(cfg.SOUNDPATHS['Cool Space Music'])
pygame.mixer.music.set_volume(0.4)
pygame.mixer.music.play(-1)
explosion_sound = pygame.mixer.Sound(cfg.SOUNDPATHS['boom'])
fire_sound = pygame.mixer.Sound(cfg.SOUNDPATHS['shot'])
font = pygame.font.Font(cfg.FONTPATH, 20)
# 遊戲背景圖
bg_imgs = [cfg.IMAGEPATHS['bg_big'], cfg.IMAGEPATHS['seamless_space'], cfg.IMAGEPATHS['space3']]
bg_move_dis = 0
bg_1 = pygame.image.load(bg_imgs[0]).convert()
bg_2 = pygame.image.load(bg_imgs[1]).convert()
bg_3 = pygame.image.load(bg_imgs[2]).convert()
# 玩家 , 和小行星精靈組
player_group = pygame.sprite.Group()
bullet_group = pygame.sprite.Group()
asteroid_group = pygame.sprite.Group()
# 產生小行星的時間間隔
asteroid_ticks = 90
for i in range(num_player):
player_group.add(Ship(i+1, cfg))
clock = pygame.time.Clock()
# 分數
score_1, score_2 = 0, 0
# 遊戲主迴圈
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
# -- 玩家一 : ↑↓←→控制 , j 射擊 ; 玩家二 : wsad 控制 , 空格射擊
pressed_keys 外匯跟單gendan5.com= pygame.key.get_pressed()
for idx, player in enumerate(player_group):
direction = None
if idx == 0:
if pressed_keys[pygame.K_UP]:
direction = 'up'
elif pressed_keys[pygame.K_DOWN]:
direction = 'down'
elif pressed_keys[pygame.K_LEFT]:
direction = 'left'
elif pressed_keys[pygame.K_RIGHT]:
direction = 'right'
if direction:
player.move(direction)
if pressed_keys[pygame.K_j]:
if player.cooling_time == 0:
fire_sound.play()
bullet_group.add(player.shot())
player.cooling_time = 20
elif idx == 1:
if pressed_keys[pygame.K_w]:
direction = 'up'
elif pressed_keys[pygame.K_s]:
direction = 'down'
elif pressed_keys[pygame.K_a]:
direction = 'left'
elif pressed_keys[pygame.K_d]:
direction = 'right'
if direction:
player.move(direction)
if pressed_keys[pygame.K_SPACE]:
if player.cooling_time == 0:
fire_sound.play()
bullet_group.add(player.shot())
player.cooling_time = 20
if player.cooling_time > 0:
player.cooling_time -= 1
if (score_1 + score_2) < 500:
background = bg_1
elif (score_1 + score_2) < 1500:
background = bg_2
else:
background = bg_3
# -- 向下移動背景圖實現飛船向上移動的效果
screen.blit(background, (0, -background.get_rect().height + bg_move_dis))
screen.blit(background, (0, bg_move_dis))
bg_move_dis = (bg_move_dis + 2) % background.get_rect().height
# -- 生成小行星
if asteroid_ticks == 0:
asteroid_ticks = 90
asteroid_group.add(Asteroid(cfg))
else:
asteroid_ticks -= 1
# -- 畫飛船
for player in player_group:
if pygame.sprite.spritecollide(player, asteroid_group, True, None):
player.explode_step = 1
explosion_sound.play()
elif player.explode_step > 0:
if player.explode_step > 3:
player_group.remove(player)
if len(player_group) == 0:
return
else:
player.explode(screen)
else:
player.draw(screen)
# -- 畫
for bullet in bullet_group:
bullet.move()
if pygame.sprite.spritecollide(bullet, asteroid_group, True, None):
bullet_group.remove(bullet)
if bullet.player_idx == 1:
score_1 += 1
else:
score_2 += 1
else:
bullet.draw(screen)
# -- 畫小行星
for asteroid in asteroid_group:
asteroid.move()
asteroid.rotate()
asteroid.draw(screen)
# -- 顯示分數
score_1_text = ' 玩家一得分 : %s' % score_1
score_2_text = ' 玩家二得分 : %s' % score_2
text_1 = font.render(score_1_text, True, (0, 0, 255))
text_2 = font.render(score_2_text, True, (255, 0, 0))
screen.blit(text_1, (2, 5))
screen.blit(text_2, (2, 35))
# -- 螢幕重新整理
pygame.display.update()
clock.tick(60)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2868704/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 遊戲開發者依然能從這7款經典街機遊戲中汲取經驗遊戲開發
- 經典示例-在快樂中鍛鍊程式邏輯
- 在這款模擬遊戲裡,做一個快樂的農民遊戲
- 一個bug造就的經典遊戲....遊戲
- Python遊戲開發!Mac完美安裝pygamePython遊戲開發MacGAM
- 幾個常用經典演算法總結演算法
- Python3+pygame實現Windows經典掃雷PythonGAMWindows
- Bash 學習的快樂之旅:3 個命令列遊戲命令列遊戲
- 買這家公司的遊戲,還不如買兩瓶快樂水?遊戲
- 幾道經典的幾何作圖趣題
- 來之不易的經典旋律:當年的遊戲音樂是如何打造的?遊戲
- 青少年如何使用 Python 開始遊戲開發Python遊戲開發
- 遊戲開發經驗——遊戲開發的基本常識(轉)遊戲開發
- 幾個非常經典的對“資料倉儲”的解釋(ZT)
- 幾種經典的排序演算法排序演算法
- Python遊戲開發工程師的起步,幾款遊戲開發案例Python遊戲開發工程師
- 【Pygame實戰】開心——消消樂,你樂,我樂,大家樂~GAM
- 第七篇:幾個經典的TCP通訊函式TCP函式
- vue專案中mapboxgl的幾個經典操作程式碼示例Vue
- Python遊戲開發:Pygame的執行環境|案例執行與分析Python遊戲開發GAM
- 演算法設計幾個經典思維題目演算法
- 幾種經典密碼(classic cipher)密碼
- 經典遊戲:吃豆人遊戲
- 一個套路,讓你設計出經典款遊戲遊戲
- 七大快取經典問題快取
- 用於遊戲開發的圖形和音樂工具遊戲開發
- 這幾天找工作的經歷
- 經典掃雷遊戲Web版遊戲Web
- 從經典遊戲中學到的7個伏筆設計技巧遊戲
- 2011年最經典的15個 HTML5遊戲HTML遊戲
- Linux的10個經典彩蛋Linux
- win10電腦如何玩經典老遊戲 win10執行經典遊戲的步驟Win10遊戲
- 這幾天,半個獨立遊戲圈都在吐槽這家公司遊戲
- 這些Git事故災難, 你經歷過幾個?Git
- Steam 是暢玩遊戲、討論遊戲、創造遊戲的快樂所在遊戲
- 全面解析快取應用經典問題快取
- 九年遊戲開發經驗談遊戲開發
- 遊戲設計-遊戲快樂知多少(四) ?-驚喜遊戲設計