python 비행기 대전 게임 개발

본 논문 의 사례 는 python 이 비행기 대전 게임 을 개발 하 는 구체 적 인 코드 를 공유 하여 여러분 께 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.

import pygame
import random
import math  #     
 
#      
pygame.init()
#       
windows = pygame.display.set_mode((800, 600))
#       
pygame.display.set_caption("    ")
#      logo
icon = pygame.image.load('logo.jpg')
pygame.display.set_icon(icon)
 
# 4.      
bgcolor = pygame.image.load('bj.png')
# 5.      
playerimg = pygame.image.load('fj.png')
X = 350  #     X 
Y = 480  #     Y 
#         palyerStep  0。               
playerStep = 0
 
#       
pygame.mixer.music.load('bj.mp3')
pygame.mixer.music.play(-1)
#        
# bao_music = pygame.mixer.Sound('bj.mp3')
 
 
#   
score = 0
#        
font = pygame.font.Font('freesansbold.ttf', 32)
 
 
#    
def show_score():
    #      
    text = f"Score:{score}"
    #          text True  24   
    score_render = font.render(text, True, (0, 255, 0))
    #           
    windows.blit(score_render, (10, 10))
 
 
#        
over = False
over_font = pygame.font.Font('freesansbold.ttf', 64)
 
#       
def check_over():
    if over:
        text = "Game Over"
        render = font.render(text, True, (255, 0, 0))
        windows.blit(render, (320, 200))
 
 
# 8.    .
 
# 11.      
number_enemy = 6
 
 
#    
class Enemy:
    def __init__(self):
        #
        self.img = pygame.image.load('enemy.png')
        self.x = random.randint(200, 600)  #     X
        self.y = random.randint(50, 250)  #     Y
        self.step = random.randint(2, 4)  #       
 
    #          
    def reset(self):
        self.x = random.randint(200, 600)
        self.y = random.randint(50, 180)
 
 
def distance(bx, by, ex, ey):
    a = bx - ex
    b = by - ey
    return math.sqrt(a * a + b * b)  #    
 
 
#        
enemis = []
for i in range(number_enemy):  #        class Enemy    ,                     
    enemis.append(Enemy())
 
 
#                
def enemy():  #          ,         for            
    global over
    for e in enemis:
        windows.blit(e.img, (e.x, e.y))
        e.x += e.step
        if e.x > 750 or e.x < 0:  #           
            e.step *= -1  #         
            e.y += 40  #        
            #                      
            if e.y > 436:
                over = True
                print("     ")
                enemis.clear()
 
 
#                ==     
def fiji_type():  #           X Y        
    global X, Y
    # 5.     
    windows.blit(playerimg, (X, Y))
    # 6.    
    X += plagerStep
    #       
    if X > 680:
        X = 680
    if X < 0:
        X = 0
 
 
#     
class Bullet:
    def __init__(self):
        self.img = pygame.image.load('bullet.png')
        self.x = X + 55  #      X 
        self.y = Y + 5  #           
        self.step = 2  #        
 
    #     
    def hit(self):
        global score
        for e in enemis:
            if distance(self.x, self.y, e.x, e.y) < 30:
                #    
                bullets.remove(self)
                e.reset()  #     
                #     10 
                score += 10
 
 
bullets = []  #        
 
 
#       
def show_bullets():
    for b in bullets:
        windows.blit(b.img, (b.x, b.y))
        b.hit()  #          
        b.y -= b.step  #     
        #           
        if b.y < 0:
            bullets.remove(b)
 
 
# 3.     
running = True
while running:
    # 4.  
    #             
    #    bgcolor
    windows.blit(bgcolor, (0, 0))
    #       
    show_score()
    # event.get    
    for event in pygame.event.get():
        #          QUIT
        if event.type == pygame.QUIT:
            #      False       
            running = False
        # 7.       
        #             (playerStep )     
        if event.type == pygame.KEYDOWN:
            #         ,     
            if event.key == pygame.K_RIGHT:
                plagerStep = 3
                #       
            elif event.key == pygame.K_LEFT:
                plagerStep = -3
            #           
            elif event.key == pygame.K_SPACE:
                #       
                b = Bullet()
                bullets.append(b)
 
                #         ,
        if event.type == pygame.KEYUP:
            plagerStep = 0
    #           
    fiji_type()
    #         
    enemy()
    show_bullets()  #     
    #      
    check_over()
    #       
    pygame.display.update()
# global       
 
 
'''     
1.      
2.   
3.    
4.    
5.    
6.      
7.    
8.    
9.       
10.      
11.     
12.    
13.    
14.       
15.    
16.     
17.       
18.    
19.    
'''

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기