宇宙物演进程——外星人去哪了游戏代码,面试经验技巧分享

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):

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

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

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



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

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

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
img

在这里插入图片描述

感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的:

① 2000多本Python电子书(主流和经典的书籍应该都有了)

② Python标准库资料(最全中文版)

③ 项目源码(四五十个有趣且经典的练手项目及源码)

④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

① 2000多本Python电子书(主流和经典的书籍应该都有了)

② Python标准库资料(最全中文版)

③ 项目源码(四五十个有趣且经典的练手项目及源码)

④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-69rxaPHS-1712798536108)]

  • 22
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的 Python 外星人入侵小游戏代码: ```python import pygame import random # 初始化 pygame pygame.init() # 设置游戏窗口 screen_width = 800 screen_height = 600 screen = pygame.display.set_mode((screen_width, screen_height)) # 设置游戏标题 pygame.display.set_caption("Alien Invasion") # 加载游戏背景 background_image = pygame.image.load("background.png") # 加载玩家飞船 player_image = pygame.image.load("player.png") player_width = player_image.get_width() player_height = player_image.get_height() player_x = (screen_width - player_width) // 2 player_y = screen_height - player_height - 10 # 加载外星人 alien_image = pygame.image.load("alien.png") alien_width = alien_image.get_width() alien_height = alien_image.get_height() alien_x = random.randint(0, screen_width - alien_width) alien_y = 0 alien_speed = 5 # 设置游戏循环 running = True while running: # 处理游戏事件 for event in pygame.event.get(): if event.type == pygame.QUIT: running = False # 绘制游戏背景 screen.blit(background_image, (0, 0)) # 移动玩家飞船 keys = pygame.key.get_pressed() if keys[pygame.K_LEFT] and player_x > 0: player_x -= 5 if keys[pygame.K_RIGHT] and player_x < screen_width - player_width: player_x += 5 if keys[pygame.K_UP] and player_y > 0: player_y -= 5 if keys[pygame.K_DOWN] and player_y < screen_height - player_height: player_y += 5 # 绘制玩家飞船和外星人 screen.blit(player_image, (player_x, player_y)) screen.blit(alien_image, (alien_x, alien_y)) # 移动外星人 alien_y += alien_speed if alien_y > screen_height: alien_x = random.randint(0, screen_width - alien_width) alien_y = 0 # 检测玩家和外星人是否相撞 if player_x < alien_x + alien_width and player_x + player_width > alien_x and player_y < alien_y + alien_height and player_y + player_height > alien_y: running = False # 刷新屏幕 pygame.display.flip() # 结束游戏 pygame.quit() ``` 在运行游戏之前,需要先准备好游戏所需的图片,并将其命名为 `background.png`、`player.png` 和 `alien.png`,并与代码文件放在同一个目录下。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值