• 用Python实现的这五个小游戏,你真的学会了嘛?


    游戏名称
    1、五子棋
    2、雷霆战机
    3、贪吃蛇
    4、坦克大战
    5、俄罗斯方块


    开发环境
    Python版本:3.6.4
    相关模块:
    pygame模块;
    以及一些Python自带的模块。

    环境搭建
    安装Python并添加到环境变量,pip安装需要的相关模块即可。

    一:五子棋
    五子棋是是一种两人对弈的纯策略型棋类游戏。

    五子棋有两种玩法。玩法一:双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成五子连线者获胜。玩法二:自己形成五子连线就替换对方任意一枚棋子。被替换的棋子可以和对方交换棋子。最后以先出完所有棋子的一方为胜。

    pygame模块

    游戏采用pygame模块需要先安装

    pip install pygame

    窗口启动

    import pygame
     
    pygame.init()
    pygame.display.set_caption('五子棋-IT入门') # 改标题
    # pygame.display.set_mode()表示建立个窗口,左上角为坐标原点,往右为x正向,往下为y轴正向
    screen = pygame.display.set_mode((640,640))


    绘制棋子
    需要说一下的是画棋子,因为没找到什么合适的棋子图片,所以只要自己来画棋子。
    我们用pygame.draw.circle

    绘制棋盘

    定义棋盘这个类
    class RenjuBoard(object):
     
        def __init__(self):
            # self._board = board = [[EMPTY] * 15 for _ in range(15)]
            # 将棋盘每一个交叉点都看作列表的一个元素位,一共有15*15共225个元素
            self._board = [[]] * 15
            self.reset()
        #重置棋盘
        def reset(self):
            for row in range(len(self._board)):
                self._board[row] = [EMPTY] * 15
        #定义棋盘上的下棋函数,row表示行,col表示列,is_black表示判断当前点位该下黑棋,还是白棋
        def move(self, row, col, is_black):
            if self._board[row][col] == EMPTY:
                self._board[row][col] = BLACK if is_black else WHITE
                return True
            return False
        # 给棋盘定义一个函数将自己在screen上面画出来,使用pygame.draw()函数。并且顺便将下了的棋子也画出来
        def draw(self, screen):
            for h in range(1, 16):
                pygame.draw.line(screen, black_color,
                                 [40, h * 40], [600, h * 40], 1)
                pygame.draw.line(screen, black_color,
                                 [h * 40,40], [h * 40, 600], 1)
            # 给棋盘加一个外框,使美观
            pygame.draw.rect(screen, black_color, [36, 36, 568, 568], 3)
     
            # 在棋盘上标出,天元以及另外4个特殊点位
            pygame.draw.circle(screen, black_color, [320, 320], 5, 0)
            pygame.draw.circle(screen, black_color, [160, 160], 3, 0)
            pygame.draw.circle(screen, black_color, [160, 480], 3, 0)
            pygame.draw.circle(screen, black_color, [480, 160], 3, 0)
            pygame.draw.circle(screen, black_color, [480, 480], 3, 0)
            #做2次for循环取得棋盘上所有交叉点的坐标
            for row in range(len(self._board)):
                for col in range(len(self._board[row])):
                    # 将下在棋盘上的棋子画出来
                    if self._board[row][col] != EMPTY:
                        ccolor = black_color \
                            if self._board[row][col] == BLACK else white_color
                        # 取得这个交叉点下的棋子的颜色,并将棋子画出来
                        pos = [40 * (col + 1), 40 * (row + 1)]
                        # 画出棋子
                        pygame.draw.circle(screen, ccolor, pos, 18, 0)


    最后就是代码的实现啦,代码有点长我就不一一写出来啦,需要的小伙伴可以看相关文件哟!!

    效果展示

  • 相关阅读:
    总结:Servlet
    MySQL数据库操作
    高等数学教材重难点题型总结(一)函数与极限
    机器学习 泰坦尼克号——灾难中的机器学习
    我常用的几个 VueUse 最佳组合,推荐给你们!
    含文档+PPT+源码等]精品微信小程序校园第二课堂+后台管理系统|前后分离VUE[包运行成功]微信小程序毕业设计项目源码计算机毕设
    大力说企微入门系列第二课:搭建体系
    Vue3 组合式 API:依赖注入(四)
    Pywinauto的安装及使用
    git 删除大文件记录解决拉取代码超时问题
  • 原文地址:https://blog.csdn.net/m0_59485658/article/details/127707078