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

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

大游戏小游戏有千千万万,这些小游戏应该只有90后才玩过和懂吧

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

使用工具:

  • Python3.8、pycharm2020

也可以不安装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贪吃蛇

经典游戏俄罗斯方块

 

 

 

 

 

责任编辑:未丽燕 来源: 今日头条
相关推荐

2019-09-25 09:05:52

Python 机器学习编程语言

2021-11-16 11:32:55

开发跳跃游戏

2019-06-18 07:55:30

WindowsWindows 10操作系统

2021-02-24 11:13:48

IDE工具代码编辑器

2014-11-24 09:45:26

2017-07-25 09:27:39

2019-08-27 15:12:12

Linux操作系统Windows

2022-03-08 12:00:22

软件卡巴斯基RAR

2019-07-25 10:45:05

GitHub技巧网站

2018-09-11 09:14:52

面试公司缺点

2018-12-05 15:11:57

APP苹果游戏

2022-05-29 08:54:44

Edge浏览器

2024-09-05 09:25:59

SpringUserDAO接口

2021-03-18 07:52:42

代码性能技巧开发

2021-06-01 05:16:49

前端开发技术热点

2015-07-13 09:04:10

互联网设备设备

2018-09-02 15:43:56

Python代码编程语言

2020-02-25 23:36:04

代码开发工具

2019-07-08 15:05:09

Python程序员编程语言

2015-03-16 11:33:16

程序员代码bug
点赞
收藏

51CTO技术栈公众号