宇宙物演进程——外星人去哪了游戏代码(Python实现)

4 游戏外星人入侵展示

外星人入侵

5 Python代码实现

#导入相关库=

import os

import sys

import cfg

import random

import pygame

from modules import *

#开始游戏

def startGame(screen):

clock = pygame.time.Clock()

加载字体

font = pygame.font.SysFont(‘arial’, 18)

if not os.path.isfile(‘score’):

f = open(‘score’, ‘w’)

f.write(‘0’)

f.close()

with open(‘score’, ‘r’) as f:

highest_score = int(f.read().strip())

敌方

enemies_group = pygame.sprite.Group()

for i in range(55):

if i < 11:

enemy = enemySprite(‘small’, i, cfg.WHITE, cfg.WHITE)

elif i < 33:

enemy = enemySprite(‘medium’, i, cfg.WHITE, cfg.WHITE)

else:

enemy = enemySprite(‘large’, i, cfg.WHITE, cfg.WHITE)

enemy.rect.x = 85 + (i % 11) * 50

enemy.rect.y = 120 + (i // 11) * 45

enemies_group.add(enemy)

boomed_enemies_group = pygame.sprite.Group()

en_bullets_group = pygame.sprite.Group()

ufo = ufoSprite(color=cfg.RED)

#====我方=

myaircraft = aircraftSprite(color=cfg.GREEN, bullet_color=cfg.WHITE)

my_bullets_group = pygame.sprite.Group()

#======用于控制敌方位置更新=

#=移动一行=

enemy_move_count = 24

enemy_move_interval = 24

enemy_move_flag = False

#改变移动方向(改变方向的同时集体下降一次)=

enemy_change_direction_count = 0

enemy_change_direction_interval = 60

enemy_need_down = False

enemy_move_right = True

enemy_need_move_row = 6

enemy_max_row = 5

#=用于控制敌方发射子弹=

enemy_shot_interval = 100

enemy_shot_count = 0

enemy_shot_flag = False

#=游戏进行中=

running = True

is_win = False

#=主循环======

while running:

screen.fill(cfg.BLACK)

for event in pygame.event.get():

#=点右上角的X或者按Esc键退出游戏===

if event.type == pygame.QUIT:

pygame.quit()

sys.exit()

if event.type == pygame.KEYDOWN:

if event.key == pygame.K_ESCAPE:

pygame.quit()

sys.exit()

#=射击=====

if event.type == pygame.MOUSEBUTTONDOWN:

my_bullet = myaircraft.shot()

if my_bullet:

my_bullets_group.add(my_bullet)

#我方子弹与敌方/UFO碰撞检测=========

for enemy in enemies_group:

if pygame.sprite.spritecollide(enemy, my_bullets_group, True, None):

boomed_enemies_group.add(enemy)

enemies_group.remove(enemy)

myaircraft.score += enemy.reward

if pygame.sprite.spritecollide(ufo, my_bullets_group, True, None):

ufo.is_dead = True

myaircraft.score += ufo.reward

#更新并画敌方==

#敌方子弹=

enemy_shot_count += 1

if enemy_shot_count > enemy_shot_interval:

enemy_shot_flag = True

enemies_survive_list = [enemy.number for enemy in enemies_group]

shot_number = random.choice(enemies_survive_list)

enemy_shot_count = 0

#敌方移动======

enemy_move_count += 1

if enemy_move_count > enemy_move_interval:

enemy_move_count = 0

enemy_move_flag = True

enemy_need_move_row -= 1

if enemy_need_move_row == 0:

enemy_need_move_row = enemy_max_row

enemy_change_direction_count += 1

if enemy_change_direction_count > enemy_change_direction_interval:

enemy_change_direction_count = 1

enemy_move_right = not enemy_move_right

enemy_need_down = True

#====每次下降提高移动和射击速度=

enemy_move_interval = max(15, enemy_move_interval-3)

enemy_shot_interval = max(50, enemy_move_interval-10)

#=遍历更新==========

for enemy in enemies_group:

if enemy_shot_flag:

if enemy.number == shot_number:

en_bullet = enemy.shot()

en_bullets_group.add(en_bullet)

if enemy_move_flag:

if enemy.number in range((enemy_need_move_row-1)11, enemy_need_move_row11):

if enemy_move_right:

enemy.update(‘right’, cfg.SCREENSIZE[1])

else:

enemy.update(‘left’, cfg.SCREENSIZE[1])

else:

enemy.update(None, cfg.SCREENSIZE[1])

if enemy_need_down:

if enemy.update(‘down’, cfg.SCREENSIZE[1]):

running = False

is_win = False

enemy.change_count -= 1

enemy.draw(screen)

enemy_move_flag = False

enemy_need_down = False

enemy_shot_flag = False

#==敌方爆炸特效=

for boomed_enemy in boomed_enemies_group:

if boomed_enemy.boom(screen):

boomed_enemies_group.remove(boomed_enemy)

del boomed_enemy

#==敌方子弹与我方飞船碰撞检测=

if not myaircraft.one_dead:

if pygame.sprite.spritecollide(myaircraft, en_bullets_group, True, None):

myaircraft.one_dead = True

if myaircraft.one_dead:

if myaircraft.boom(screen):

myaircraft.resetBoom()

myaircraft.num_life -= 1

if myaircraft.num_life < 1:

running = False

is_win = False

else:

#=更新飞船======

myaircraft.update(cfg.SCREENSIZE[0])

#画飞船=

myaircraft.draw(screen)

if (not ufo.has_boomed) and (ufo.is_dead):

if ufo.boom(screen):

ufo.has_boomed = True

else:

#=更新UFO=

ufo.update(cfg.SCREENSIZE[0])

#=画UFO=

ufo.draw(screen)

#=画我方飞船子弹=

for bullet in my_bullets_group:

if bullet.update():

my_bullets_group.remove(bullet)

del bullet

else:

bullet.draw(screen)

#=画敌方子弹=

for bullet in en_bullets_group:

if bullet.update(cfg.SCREENSIZE[1]):

en_bullets_group.remove(bullet)

del bullet

else:

bullet.draw(screen)
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)

13780529440)]

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值