V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xuanwu
V2EX  ›  推广

木兰编程语言 0.0.14.3:井字棋演示, tuple、枚举等

  •  
  •   xuanwu · 2020-10-17 16:25:55 +08:00 · 884 次点击
    这是一个创建于 1288 天前的主题,其中的信息可能已经有所发展或是发生改变。

    知乎原文:木兰编程语言 0.0.14.3:井字棋演示,tuple 、枚举等

    安装方法:pip install ulang,使用方法与例程请见 pypi 项目首页(源于码云首页)。 注意:必需 python 3.7

    前文只画了个井字棋棋盘,本版本完成与自己对弈的功能(与原 Python 代码功能相同)。在此期间检验已重现的部分木兰的实用程度,并在使用中发现需要重现的语法进而加以实现。

    1 实例演示

    演示

    主要木兰代码如下(完整代码在此,基本沿用原 Python 代码结构,仅作了些微重构):

    pygame.init()
    pygame.display.set_caption('井字棋')
    屏幕 = pygame.display.set_mode(tuple(棋盘尺寸, 棋盘尺寸))
    loop {
      for 事件 in pygame.event.get() {
        事件类型 = 事件.__getattribute__('type')
        if 事件类型 == pygame.QUIT {
          pygame.quit()
          quit()
        } elif 进行状态 == 状态.对弈 and 事件类型 == pygame.MOUSEBUTTONUP {
          x, y = pygame.mouse.get_pos()
          横格 = int((x - 边框) * 1.0 / 格子尺寸)
          纵格 = int((y - 边框) * 1.0 / 格子尺寸)
          if 在棋盘内(横格, 纵格) and !该位置已占(横格, 纵格) {
            所有落子.append(tuple(横格, 纵格, 哪方))
            if 胜负已分() {
              进行状态 = 哪方 == 棋手.X ? 状态.X 胜 : 状态.O 胜
            } else {
              哪方 = 哪方 == 棋手.X ? 棋手.O : 棋手.X
            }
          }
        }
      }
      屏幕.fill(背景色)
      画格子()
    
      for 落子 in 所有落子 {
        画棋子(落子)
      }
    
      宣布 = 进行状态 != 状态.对弈 ?
        ((进行状态 == 状态.X 胜 ? 'X' : 'O') + " 赢了!!")
        : (len(所有落子) == 9 ? "平局" : "")
      // 比赛结束
      if 宣布 != "" {
        字体 = pygame.font.SysFont("pmingliu", 50)
        文字 = 字体.render(宣布, true, 红色)
        屏幕.blit(文字, tuple(20,190))
      }
    
      pygame.display.update()
    }
    

    2 语言功能

    2.1 元组( tuple )

    之前未发现元组初始化的简便方法。本周发现可用内置函数“tuple(1, 2, 3)”进行初始化

    [余下内容见知乎原文]

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3520 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 04:49 · PVG 12:49 · LAX 21:49 · JFK 00:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.