文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python代码,能玩30多款童年游戏!这些有几个是你玩过的

2024-12-03 06:04

关注

儿童节即将到来,虽然秃头程序员没有头发,但是童心还是一直都在的,今天就分享一些私藏的童年游戏,十几行代码就能进入使用Python开发的小游戏快乐玩耍!

使用工具:

也可以不安装pycharm2020也可以直接运行~但是安装了些会好一点

1.五子棋

源码:

 

  1. '''游戏开始界面''' 
  2. class gameStartUI(QWidget): 
  3.     def __init__(self, parent=None, **kwargs): 
  4.         super(gameStartUI, self).__init__(parent) 
  5.         self.setFixedSize(760, 650) 
  6.         self.setWindowTitle('五子棋 —— 九歌'
  7.         self.setWindowIcon(QIcon(cfg.ICON_FILEPATH)) 
  8.         # 背景图片 
  9.         palette = QPalette() 
  10.         palette.setBrush(self.backgroundRole(), QBrush(QPixmap(cfg.BACKGROUND_IMAGEPATHS.get('bg_start')))) 
  11.         self.setPalette(palette) 
  12.         # 按钮 
  13.         # --人机对战 
  14.         self.ai_button = PushButton(cfg.BUTTON_IMAGEPATHS.get('ai'), self) 
  15.         self.ai_button.move(250, 200) 
  16.         self.ai_button.show() 
  17.         self.ai_button.click_signal.connect(self.playWithAI) 
  18.         # --联机对战 
  19.         self.online_button = PushButton(cfg.BUTTON_IMAGEPATHS.get('online'), self) 
  20.         self.online_button.move(250, 350) 
  21.         self.online_button.show() 
  22.         self.online_button.click_signal.connect(self.playOnline) 
  23.     '''人机对战''' 
  24.     def playWithAI(self): 
  25.         self.close() 
  26.         self.gaming_ui = playWithAIUI(cfg) 
  27.         self.gaming_ui.exit_signal.connect(lambda: sys.exit()) 
  28.         self.gaming_ui.back_signal.connect(self.show) 
  29.         self.gaming_ui.show() 
  30.     '''联机对战''' 
  31.     def playOnline(self): 
  32.         self.close() 
  33.         self.gaming_ui = playOnlineUI(cfg, self) 
  34.         self.gaming_ui.show() 
  35.   
  36.   
  37. '''run''' 
  38. if __name__ == '__main__'
  39.     app = QApplication(sys.argv) 
  40.     handle = gameStartUI() 
  41.     font = QFont() 
  42.     font.setPointSize(12) 
  43.     handle.setFont(font) 
  44.     handle.show() 
  45.     sys.exit(app.exec_()) 

2.超级玛丽

这个源码超级多多,文件很大很大~需要源码的同学关注小编,并私信“01”领取

 

  1.  else
  2.         break 
  3. Interface(screen, cfg, mode='game_end'
  4.  
  5. me.display.update() 
  6.         clock.tick(cfg.FPS) 
  7.     if is_win_flag: 

 

3.炸弹人

源码:

 

  1. '''游戏主程序''' 
  2. def main(cfg): 
  3.     # 初始化 
  4.     pygame.init() 
  5.     pygame.mixer.init() 
  6.     pygame.mixer.music.load(cfg.BGMPATH) 
  7.     pygame.mixer.music.play(-1, 0.0) 
  8.     screen = pygame.display.set_mode(cfg.SCREENSIZE) 
  9.     pygame.display.set_caption('Bomber Man —— 九歌'
  10.     # 开始界面 
  11.     Interface(screen, cfg, mode='game_start'
  12.     # 游戏主循环 
  13.     font = pygame.font.SysFont('Consolas', 15) 
  14.     for gamemap_path in cfg.GAMEMAPPATHS: 
  15.         # -地图 
  16.         map_parser = mapParser(gamemap_path, bg_paths=cfg.BACKGROUNDPATHS, wall_paths=cfg.WALLPATHS, blocksize=cfg.BLOCKSIZE) 
  17.         # -水果 
  18.         fruit_sprite_group = pygame.sprite.Group() 
  19.         used_spaces = [] 
  20.         for i in range(5): 
  21.             coordinate = map_parser.randomGetSpace(used_spaces) 
  22.             used_spaces.append(coordinate) 
  23.             fruit_sprite_group.add(Fruit(random.choice(cfg.FRUITPATHS), coordinate=coordinate, blocksize=cfg.BLOCKSIZE)) 
  24.         # -我方Hero 
  25.         coordinate = map_parser.randomGetSpace(used_spaces) 
  26.         used_spaces.append(coordinate) 
  27.         ourhero = Hero(imagepaths=cfg.HEROZELDAPATHS, coordinate=coordinate, blocksize=cfg.BLOCKSIZE, map_parser=map_parser, hero_name='ZELDA'
  28.         # -电脑Hero 
  29.         aihero_sprite_group = pygame.sprite.Group() 
  30.         coordinate = map_parser.randomGetSpace(used_spaces) 
  31.         aihero_sprite_group.add(Hero(imagepaths=cfg.HEROBATMANPATHS, coordinate=coordinate, blocksize=cfg.BLOCKSIZE, map_parser=map_parser, hero_name='BATMAN')) 
  32.         used_spaces.append(coordinate) 
  33.         coordinate = map_parser.randomGetSpace(used_spaces) 
  34.         aihero_sprite_group.add(Hero(imagepaths=cfg.HERODKPATHS, coordinate=coordinate, blocksize=cfg.BLOCKSIZE, map_parser=map_parser, hero_name='DK')) 
  35.         used_spaces.append(coordinate) 
  36.         # -炸弹bomb 
  37.         bomb_sprite_group = pygame.sprite.Group() 
  38.         # -用于判断游戏胜利或者失败的flag 
  39.         is_win_flag = False 
  40.         # -主循环 
  41.         screen = pygame.display.set_mode(map_parser.screen_size) 
  42.         clock = pygame.time.Clock() 
  43.         while True
  44.             dt = clock.tick(cfg.FPS) 
  45.             for event in pygame.event.get(): 
  46.                 if event.type == pygame.QUIT: 
  47.                     pygame.quit() 
  48.                     sys.exit(-1) 
  49.                 # --↑↓←→键控制上下左右, 空格键丢炸弹 
  50.                 elif event.type == pygame.KEYDOWN: 
  51.                     if event.key == pygame.K_UP: 
  52.                         ourhero.move('up'
  53.                     elif event.key == pygame.K_DOWN: 
  54.                         ourhero.move('down'
  55.                     elif event.key == pygame.K_LEFT: 
  56.                         ourhero.move('left'
  57.                     elif event.key == pygame.K_RIGHT: 
  58.                         ourhero.move('right'
  59.                     elif event.key == pygame.K_SPACE: 
  60.                         if ourhero.bomb_cooling_count <= 0: 
  61.                             bomb_sprite_group.add(ourhero.generateBomb(imagepath=cfg.BOMBPATH, digitalcolor=cfg.YELLOW, explode_imagepath=cfg.FIREPATH)) 
  62.             screen.fill(cfg.WHITE) 
  63.             # --电脑Hero随机行动 
  64.             for hero in aihero_sprite_group: 
  65.                 action, flag = hero.randomAction(dt) 
  66.                 if flag and action == 'dropbomb'
  67.                     bomb_sprite_group.add(hero.generateBomb(imagepath=cfg.BOMBPATH, digitalcolor=cfg.YELLOW, explode_imagepath=cfg.FIREPATH)) 
  68.             # --吃到水果加生命值(只要是Hero, 都能加) 
  69.             ourhero.eatFruit(fruit_sprite_group) 
  70.             for hero in aihero_sprite_group: 
  71.                 hero.eatFruit(fruit_sprite_group) 
  72.             # --游戏元素都绑定到屏幕上 
  73.             map_parser.draw(screen) 
  74.             for bomb in bomb_sprite_group: 
  75.                 if not bomb.is_being: 
  76.                     bomb_sprite_group.remove(bomb) 
  77.                 explode_area = bomb.draw(screen, dt, map_parser) 
  78.                 if explode_area: 
  79.                     # --爆炸火焰范围内的Hero生命值将持续下降 
  80.                     if ourhero.coordinate in explode_area: 
  81.                         ourhero.health_value -= bomb.harm_value 
  82.                     for hero in aihero_sprite_group: 
  83.                         if hero.coordinate in explode_area: 
  84.                             hero.health_value -= bomb.harm_value 
  85.             fruit_sprite_group.draw(screen) 
  86.             for hero in aihero_sprite_group: 
  87.                 hero.draw(screen, dt) 
  88.             ourhero.draw(screen, dt) 
  89.             # --左上角显示生命值 
  90.             pos_x = showText(screen, font, text=ourhero.hero_name+'(our):'+str(ourhero.health_value), color=cfg.YELLOW, position=[5, 5]) 
  91.             for hero in aihero_sprite_group: 
  92.                 pos_x, pos_y = pos_x+15, 5 
  93.                 pos_x = showText(screen, font, text=hero.hero_name+'(ai):'+str(hero.health_value), color=cfg.YELLOW, position=[pos_x, pos_y]) 
  94.             # --我方玩家生命值小于等于0/电脑方玩家生命值均小于等于0则判断游戏结束 
  95.             if ourhero.health_value <= 0: 
  96.                 is_win_flag = False 
  97.                 break 
  98.             for hero in aihero_sprite_group: 
  99.                 if hero.health_value <= 0: 
  100.                     aihero_sprite_group.remove(hero) 
  101.             if len(aihero_sprite_group) == 0: 
  102.                 is_win_flag = True 
  103.                 break 
  104.             pygame.display.update() 
  105.             clock.tick(cfg.FPS) 
  106.         if is_win_flag: 
  107.             Interface(screen, cfg, mode='game_switch'
  108.         else
  109.             break 
  110.     Interface(screen, cfg, mode='game_end'
  111.   
  112.   
  113. '''run''' 
  114. if __name__ == '__main__'
  115.     while True
  116.         main(cfg) 

4.推箱子

因为篇幅原因,下面的游戏都不贴源码了,需要的同学关注小编,并私信“01”获取下载

5.扫雷

上学时恨不得一直待在电脑房玩这个游戏,哈哈哈

第二种AI贪吃蛇

经典游戏俄罗斯方块

 

 

 

 

 

来源:今日头条内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯