1. 程式人生 > 程式設計 >python實現微信打飛機遊戲

python實現微信打飛機遊戲

本文例項為大家分享了python實現微信打飛機遊戲的具體程式碼,供大家參考,具體內容如下

import pygame
import random
import sys
 
#初始化
pygame.init()
pygame.display.set_caption('飛機火拼')#設定視窗標題
screen= pygame.display.set_mode((320,570),32)
pygame.mouse.set_visible(False)#隱藏游標
 
#載入圖片
boom1=pygame.image.load('../Game/fly/src/boom1.png')
boom2=pygame.image.load("../Game/fly/src/boom2.png")
bullet=pygame.image.load('../Game/fly/src/bullet.png')
plane=pygame.image.load("../Game/fly/src/plane.png").convert_alpha()
enemy=pygame.image.load('../Game/fly/src/enemy.png')
#設定視窗圖示
pygame.display.set_icon(plane)
background=pygame.image.load("../Game/fly/src/bg_01.png")
start=pygame.image.load('../Game/fly/src/start.png')
pause=pygame.image.load("../Game/fly/src/pause.png")
 
#pygame.mixer.init()
#Xexplosion=pygame.mixer.Sound("explosion.mp3")
#Xbullet=pygame.mixer.Sound("../Game/fly/sound/bullet.mp3")
#XgameOver=pygame.mixer.Sound("../Game/fly/sound/game_over.mp3")
#Xexplosion.set_volume(1)
 
#pygame.mixer.music.load("../Game/fly/sound/game_music.mp3")
#pygame.mixer.music.play(-1,0.0)
#pygame.mixer.music.set_volume(0.25)
 
i=0
#分數
score=0
font=pygame.font.SysFont('微軟雅黑',36)
#子彈
bullets=[]
#敵機
enemies=[]
#記錄敵機爆炸位置
boomplace=[]
#遊戲結束
gameover=False
pygame.mouse.set_pos(200,200)
while True:
  i += 1
  if i > 200:
    i =0
  screen.blit(background,(0,0))
  #通過滑鼠控制飛機
  x,y=pygame.mouse.get_pos()
  #print(x,y)
  x -= plane.get_width()/2
  y -= plane.get_height()/2
  screen.blit(plane,(x,y))
 
  #每25幀 呼叫一次
  if i%25 == 0:
    #返回 按下左鍵 中鍵 右鍵
    l,m,r=pygame.mouse.get_pressed()
    if l ==True:
      #生成子彈位置新增
      bullets.append([x+plane.get_width()/2,y])
      #Xshoot.play()
      for place in bullets:
        #子彈位置超出邊界
        if place[1]<=0:
          bullets.remove(place)
    #移動子彈位置
    for place in bullets:
      place[1] -= 55
  #繪製子彈
  for place in bullets:
    screen.blit(bullet,(place[0],place[1]))
  #敵機生成 移動 消失
  if i%199 == 0:
    enemies.append([random.randint(0,320-enemy.get_width()),-enemy.get_width()/2])
    for place in enemies:
      if place[1] >= 600:
        enemies.remove(place)
    for place in enemies:
      place[1] += 35
  for place in enemies:
    screen.blit(enemy,place[1]))
  #敵機爆炸
  for place in boomplace:
    if place[2]>0:
      screen.blit(boom1,place[1]))
      place[2] -=1
  #子彈碰撞檢測
  for bulletplace in bullets:
    for enemyplace in enemies:
      if (bulletplace[0] > enemyplace[0] and bulletplace[0] < enemyplace[0] + enemy.get_width()) and \
        (bulletplace[1] > enemyplace[1] and bulletplace[1] < enemyplace[1] + enemy.get_height()):
        boomflag = 75
        enemyplace.append(boomflag)
        boomplace.append(enemyplace)
        enemies.remove(enemyplace)
        bullets.remove(bulletplace)
        #Sexplosion.play()
        score += 1
  #飛機碰撞檢測
  for enemyplace in enemies:
    if (x + 0.7*plane.get_width() > enemyplace[0]) and (x + 0.3*plane.get_width()<enemyplace[0]+ enemy.get_width())\
      and  (y + 0.7*plane.get_height() > enemyplace[1]) and (y + 0.3*plane.get_height()<enemyplace[1]+ enemy.get_height()):
      enemies.remove(enemyplace)
 
      screen.blit(pause,0))
      screen.blit(boom2,y))
      #for place in bullets:
        #screen.blit(bullet,place[1]))
      #for place in enemies:
        #screen.blit(enemy,place[1]))
 
      text=font.render('Score%d'%score,True,0))
      screen.blit(text,(200,270))
      text=font.render("Right ReStart",(30,310))
      pygame.display.update()#重新繪製視窗
 
      gameover=True
      while gameover == True and r == False :
        l,r = pygame.mouse.get_pressed()
        for event in pygame.event.get():
          if event.type == pygame.QUIT:
            pygame.quit()
            exit()
      #重置遊戲
      i=0
      score=0
      bullets=[]
      enemies=[]
      boomplace=[]
      x,y=185-plane.get_width()/2,550 - plane.get_height()/2
  #檢測 暫停 繼續
  l,r=pygame.mouse.get_pressed()
  if r == True:
    screen.blit(background,0))
 
    screen.blit(start,0))
    screen.blit(plane,y))
    for place in bullets:
      screen.blit(bullet,place[1]))
    for place in enemies:
      screen.blit(enemy,place[1]))
    for place in boomplace:
      if place[2] >0:
        screen.blit(boom1,place[1]))
        place[2] -=1
    text=font.render(u'Score %d'%score,1,0))
    screen.blit(text,(50,0))
 
    if gameover == True:
      x,y =185,550
      gameover =False
      text =font.render(' left to start',(35,300))
    else:
      x,y=pygame.mouse.get_pos()
      text=font.render(' left to continue ',(10,300))
    pygame.display.update()
 
    while True :
      for event in pygame.event.get():
        if event.type == pygame.QUIT:
          pygame.quit()
          exit()
      l,r = pygame.mouse.get_pressed()
      if l == True:
        pygame.mouse.set_pos(x,y)
        break
  text=font.render(u"%d"%score,0))
  screen.blit(text,0))
  for event in pygame.event.get():
    if event.type == pygame.QUIT:
      pygame.quit()
      exit()

效果圖:

python實現微信打飛機遊戲

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。