python外星人入侵游戏代码,python外星人入侵游戏图片
今天给大家带来一个小游戏,叫《外星人在哪里?用Python完成,代码简单易懂。感兴趣的朋友过来看看。
1 为什么找不见外星人
为什么我们看不到外星人?物理学中曾经有一个著名的人物叫费米。众所周知,费米是物理学中发现中子轰击的人。有一个著名的费米悖论,就是费米问为什么外星人还是看不到?费米的问题包含的意思是,从概率上讲,人类不可能单独存在于地球上。因为人类只是大自然的一个造物,只要自然条件达到这种状态,生命就会进入这种状态。太阳系只是一个小星系,仅银河系就有2000到4000亿颗恒星。
2 关于宇宙
天文学家今天发现,大约5%的恒星有行星。我们来算一下,拿2000亿来说,5%的恒星有行星,这是一个数量级。然后我们假设所有行星中只有1%是类地行星。我们假设只有1%的类地行星有生命和低等生命,比如单细胞。假设有生命的星球只有1%有智慧生物,你一点一点往下推。你知道学术结论是什么吗?银河系中大约只有一百万颗行星拥有像人类一样的智慧生物。少说,十万,就银河系。记住,银河系只是宇宙中几千亿个星系中的一个星系。想想看,虽然智慧生物的总质量在宇宙中极低,但它的分布有多大。这么多智慧生物,为什么还没去过地球?
3 宇宙物演进程
我来告诉你另一组数据。根据天体物理学家的研究,137亿年前,宇宙从奇点爆发,爆发后17亿至50亿年间形成了恒星。大家注意了。我说恒星最迟50亿年才会出现,5%的恒星有行星。要知道,太阳系的行星和恒星的差距只有40亿年左右。也就是说,宇宙发生后仅仅五十亿年就出现了生命的可能性。我这个说法的意思是,智慧生物进化时间最长,可能比我们人类早达到几十亿年。我们都知道太阳系只有五十亿年的历史,也就是宇宙爆炸后八十多亿年才出现。在50亿年里,恒星系统已经出现了。理论上比地球人更早的智慧生物出现在二十多亿年前,三十多亿年前,但是我们人类的文明只有五千年的差距,也就是思考和书写符号,只有五千年的差距。
4 游戏外星人入侵展示
视频波道
外来入侵
5 Python代码实现
#====导入相关库====
导入操作系统
导入系统
导入cfg
随机导入
导入pygame
从模块导入*
#=======开始游戏=========
def startGame(屏幕):
clock=pygame.time.Clock()
#加载字体
font=py game . font . sys font( arial ,18)
如果不是os.path.isfile(score):
f=开放(得分, w )
f . write(“0”)
f.close()
用open(score , r )作为f:
highest_score=int(f.read()。strip())
#敌人
enemy _ group=py game . sprite . group()
对于(55):范围内的I
如果我11:
enemy=enemySprite(small ,I,cfg。白色,cfg。白色)
elif i 33:
enemy=enemySprite(medium ,I,cfg。白色,cfg。白色)
else:
enemy=enemySprite(large ,I,cfg。白色,cfg。白色)
enemy.rect.x=85 (i % 11) * 50
enemy.rect.y=120 (i //11) * 45
敌人_组.添加(敌人)
轰隆隆_敌人_组=pygame.sprite.Group()
en _ bullets _ group=py game . sprite . group()
ufo=ufoSprite(color=cfg。红色)
#=============我们==============
my aircraft=aircraft sprite(color=CFG。绿色,bullet_color=cfg。白色)
my_bulle
ts_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_row*11):
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)
if myaircraft.score > highest_score:
highest_score = myaircraft.score
# --得分每增加2000我方飞船增加一条生命
if (myaircraft.score % 2000 == 0) and (myaircraft.score > 0) and (myaircraft.score != myaircraft.old_score):
myaircraft.old_score = myaircraft.score
myaircraft.num_life = min(myaircraft.num_life + 1, myaircraft.max_num_life)
# --敌人都死光了的话就胜利了
if len(enemies_group) < 1:
is_win = True
running = False
# --显示文字
# ----当前得分
showText(screen, SCORE: , cfg.WHITE, font, 200, 8)
showText(screen, str(myaircraft.score), cfg.WHITE, font, 200, 24)
# ----敌人数量
showText(screen, ENEMY: , cfg.WHITE, font, 370, 8)
showText(screen, str(len(enemies_group)), cfg.WHITE, font, 370, 24)
# ----历史最高分
showText(screen, HIGHEST: , cfg.WHITE, font, 540, 8)
showText(screen, str(highest_score), cfg.WHITE, font, 540, 24)
# ----FPS
showText(screen, FPS: + str(int(clock.get_fps())), cfg.RED, font, 8, 8)
# --显示剩余生命值
showLife(screen, myaircraft.num_life, cfg.GREEN)
pygame.display.update()
clock.tick(cfg.FPS)
with open(score, w) as f:
f.write(str(highest_score))
return is_win
#=============主函数======================
def main():
# 初始化
pygame.init()
pygame.display.set_caption(宇宙演化——为什么外星人来不了地球)
screen = pygame.display.set_mode(cfg.SCREENSIZE)
pygame.mixer.init()
pygame.mixer.music.load(cfg.BGMPATH)
pygame.mixer.music.set_volume(0.4)
pygame.mixer.music.play(-1)
while True:
is_win = startGame(screen)
endInterface(screen, cfg.BLACK, is_win)
#=============运行======================
if __name__ == __main__:
main()
到此这篇关于Python实现外星人去哪了小游戏详细代码的文章就介绍到这了,更多相关Python 外星人去哪了内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。