栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

pygame简单游戏 飞机大战

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

pygame简单游戏 飞机大战

import pygame

import random

import math

from pygame.constants import TIMER_RESOLUTION


 

pygame.init()

score_value = 0

font = pygame.font.Font('freesansbold.ttf', 32)

textX = 10

textY = 10


 

def show_score(x, y):

    score = font.render("Score :" + str(score_value), True, (255, 255, 255))

    screen.blit(score, (x, y))


 

# 屏幕和图片引入

screen = pygame.display.set_mode((1000, 700))

icon = pygame.image.load("master2.jpg")

rocket = pygame.image.load("ship.png")

bulletImg = pygame.image.load("bullet.png")

background = pygame.image.load("background.jpg")

pygame.display.set_icon(icon)

pygame.display.set_caption("油管版外星人大战")


 

# 火箭参数

rocketX = 460

rocketY = 550

player_changex = 0

player_changey = 0

# 敌人参数

enemy_image = []

enemyX = []

enemyY = []

enemy_changex = []

enemy_changey = []

num_of_enemys = 5

for i in range(num_of_enemys):

    enemy_image.append(pygame.image.load("ufo2.png"))

    enemyX.append(random.randint(0, 1000))

    enemyY.append(random.randint(0, 300))

    enemy_changex.append(0.3)

    enemy_changey.append(30)

# 子弹参数

bulletx = 0

bullety = rocketY

bullet_changex = 0

bullet_changey = 1

bullet_state = "ready"

# 火箭函数


 

def rocket_player(x, y):

    screen.blit(rocket, (x, y))

# 敌人函数


 

def enemy_set(x, y, i):

    screen.blit(enemy_image[i], (x, y))

# 子弹函数


 

def fire_bullet(x, y):

    global bullet_state

    bullet_state = "fire"

    screen.blit(bulletImg, (x+50, y))

# 碰撞函数


 

def boom(enemyX, enemyY, bulletx, bullety):

    distance = math.sqrt((math.pow(enemyX-bulletx, 2)) +

                         (math.pow(enemyY-bullety, 2)))

    if distance <= 50:

        return True

    else:

        return False


 

# 主循环

message = True

while message:

    screen.fill((0, 0, 0))

    screen.blit(background, (0, 0))

    for event in pygame.event.get():

        if event.type == pygame.QUIT:

            message = False

        if event.type == pygame.KEYDOWN:

            if event.key == pygame.K_LEFT:

                player_changex += -1

            if event.key == pygame.K_RIGHT:

                player_changex += 1

            if event.key == pygame.K_SPACE:

                if bullet_state is "ready":

                    bulletx = rocketX

                    fire_bullet(bulletx, bullety)

        if event.type == pygame.KEYUP:

            if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:

                player_changex = 0

    rocketX += player_changex

    rocketY += player_changey

    if rocketX <= 0:

        rocketX = 0

    elif rocketX >= 850:

        rocketX = 850

    elif rocketY <= 0:

        rocketY = 0

    elif rocketY >= 550:

        rocketY = 550

    for i in range(num_of_enemys):

        enemyX[i] += enemy_changex[i]

        if enemyX[i] <= 0:

            enemyX[i] = 0.3

            enemy_changex[i] = +0.5

            enemyY[i] += enemy_changey[i]

        work = boom(enemyX[i], enemyY[i], bulletx, bullety)

        if work:

            bullety = rocketY

            bullet_state = "ready"

            score_value += 1

            enemyX[i] = random.randint(0, 1000)

            enemyY[i] = random.randint(0, 300)

        enemy_set(enemyX[i], enemyY[i], i)

        if enemyX[i] >= 850:

            enemyX[i] = 850

            enemy_changex[i] = -0.5

            enemyY[i] += enemy_changey[i]

    if bullety <= 0:

        bullety = rocketY

        bullet_state = "ready"

    elif bullet_state is "fire":

        fire_bullet(bulletx, bullety)

        bullety -= bullet_changey

    rocket_player(rocketX, rocketY)

    show_score(textX, textY)

    pygame.display.update()


 

 

 

 

 

 

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/325800.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号