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

30个Python小游戏,上班摸鱼我能玩一天【内附源码】

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

30个Python小游戏,上班摸鱼我能玩一天【内附源码】

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_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
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/267682.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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