操作環(huán)境
操作系統(tǒng):windows10
python版本:python 3.7
使用模塊:os,sys,random,pygame
Python有過基礎(chǔ)的都知道棘幸,我們在做游戲的時候,會用到一個模塊:pygame ! 小白需要注意的是:沒有的先 pip install 一下倦零!
具體實現(xiàn)
1:首先我們需要準備游戲中界面所需要的飛機和場景圖片误续!
2:我們初始化pygame,界面設(shè)計,繪制游戲屏幕光绕,一些前期準備做足女嘲!如:
...........
...........
...........
pygame.init() # 初始化pygame
# 使用pygame.display.set_mode()繪制游戲屏幕
screen = pygame.display.set_mode((512, 768))
# 使用pygame.time.Clock創(chuàng)建一個時鐘對象
clock = pygame.time.Clock() # 創(chuàng)建一個時鐘(后面刷新幀率時會用到)
pygame.time.set_timer(CREATE_ENEMY, 400) # 定時創(chuàng)建敵軍,計量毫秒
pygame.time.set_timer(CREATE_BULLET, 500) # 定時創(chuàng)建子彈
pygame.time.set_timer(CREATE_BOMB, random.randint(10000, 50000))
hero = Hero() # 創(chuàng)建一個英雄
hero_group = pygame.sprite.Group(hero) # 英雄精靈組
enemy_group = pygame.sprite.Group() # 敵軍精靈組
bullet_group = pygame.sprite.Group() # 子彈精靈組
bomb_group = pygame.sprite.Group() # 炸彈精靈組
font1 = pygame.font.Font("./images/SIMHEI.TTF", 40) # 設(shè)置字體樣式
font2 = pygame.font.Font("./images/SIMHEI.TTF", 25)
bomb_num = 0 # 炸彈數(shù)量
bj_num = 1 # 背景圖片的初始值,更換背景
FLAG = False # 游戲事件標識
score = False
while True:
game_text = font1.render("飛機大戰(zhàn) ", 1, (220, 36, 194)) # 文本顯示,抗鋸齒,RGB
start_text = font1.render("按下Enter 開始游戲! ", 1, (35, 221, 100))
bj_text = font1.render("←→鍵更換游戲背景 ", 1, (39, 187, 217))
for event in pygame.event.get(): # 獲取事件信息
if event.type == pygame.KEYDOWN and event.key == pygame.K_RETURN:
FLAG = True
elif event.type == pygame.KEYDOWN and event.key == pygame.K_LEFT:
bj_num += 1
if bj_num > 5:
bj_num = 1
elif event.type == pygame.KEYDOWN and event.key == pygame.K_RIGHT:
bj_num -= 1
if bj_num < 1:
bj_num = 5
elif event.type == pygame.QUIT:
exit()
bj1 = BackGround(bj_num=bj_num) # 進入游戲的背景
bj2 = BackGround(True, bj_num=bj_num) # 開始等于True的背景
bj_group = pygame.sprite.Group(bj1, bj2)
bj_group.draw(screen) # 繪制界面
............
............
............
3:功能上的實現(xiàn):英雄與敵軍碰撞時同是消除!當英雄與敵軍碰撞時替換爆炸效果圖片诞帐!繪制分數(shù)欣尼!繪制炸彈顯示子彈,與敵機碰撞時消除等等停蕉!
遇到問題沒人解答愕鼓?小編創(chuàng)建了一個Python學習交流QQ群:895817687 尋找有志同道合的小伙伴,
互幫互助,群里還有不錯的視頻學習教程和PDF電子書慧起!
# 子彈與敵機碰撞時消除
score += len(pygame.sprite.groupcollide(bullet_group, enemy_group, True, True)) # score分數(shù) collide碰撞
enemies = pygame.sprite.spritecollide(hero, enemy_group, True) # 英雄與敵軍碰撞時同是消除
# bomb_num += len(pygame.sprite.spritecollide(hero, bomb_group, True))
if len(enemies) > 0:
hero.image = pygame.image.load("./images/image 12.png") # 當英雄與敵軍碰撞時替換爆炸效果圖片
hero_group.draw(screen)
pygame.display.update()
hero.kill()
exit()
bj_group.update() # 更新所有精靈
bullet_group.update()
enemy_group.update()
hero_group.update()
bomb_group.update()
bj_group.draw(screen) # 繪制精靈到界面
enemy_group.draw(screen)
bullet_group.draw(screen)
hero_group.draw(screen)
bomb_group.draw(screen)
screen.blit(start_text, (10, 10)) # 繪制炸彈顯示
screen.blit(score_text, (10, 40)) # 繪制分數(shù)
pygame.display.update() # 刷新界面
或許做的不是很完美菇晃,后期都是可以不斷優(yōu)化的!喜歡的小哥哥小姐姐蚓挤,想要的可以私信磺送!