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

栏目:技术教程 发布时间 2020-10-17 人气 

来源:https://www.codercto.com/a/119379.html

TAG:无

侵权:admin@heimacode.com

免责声明:本文图片引用自网络,如有侵权请联系我们予以删除

黑码网发布此文仅为传递信息,不代表黑码网认同其观点。

简介:内容简介:安装方法:pip install ulang,使用方法与例程请见 pypi 项目首页(源于码云首页)。 注意:必需 python 3.7 前文只画了个井字棋棋盘,本版本完成与自己对弈的功能(与原 Python 代码功能相同)。在此期间检验已重... 本文转载自:https://www.oschina.net/news/119237/ulang-0-0...

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

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

1 实例演示

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

 

主要木兰代码如下(完整代码在此,基本沿用原 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)”进行初始化

2.2 枚举

与 Python 定义枚举类似,但之前一直没用过,井字棋示例中第一次用:

using Enum in enum
type 棋手 : Enum {
  {
    X = 1
    O = 2
  }
}

2.3 超过两项变量赋值

早先只允许两项,如:a, b = 1, 2。现在支持更多项如:a, b, c = 1, 2, 3。也同时支持了 for a, b, c in t { ... }

2.4 其他

恢复了自带木兰代码编辑器功能,并继续修正的格式化功能


附录:代码量统计

主要部分的代码行数统计,格式为:上次->现在。

  • 木兰代码量
    • 编辑器,实现与测试都是木兰代码:333 -> 381
    • 木兰测试用例,包括部分实用小程序(如井字棋):2160 -> 2304

 

  • Python 代码量(包括测试部分):2425 -> 2473
    • 分析器/语法分析器.py:986 -> 989
    • 测试/运行所有.py,检验所有木兰测试代码片段:185 -> 187
    • 环境.py,定义全局方法:157 -> 160
    • 中.py,主程序:41 -> 45
    • setup.py, 33
    • 未变
      • 分析器/词法分析器.py:198
      • 分析器/语法树.py:178
      • 交互.py,交互环境(REPL):138
      • 分析器/语法成分.py,从语法分析器中提取出来的枚举常量:79
      • 功用/反馈信息.py:49
      • 分析器/错误.py:17
      • 测试/unittest/语法树.py,确保生成的语法树与原始版本一致:67
      • 测试/unittest/交互.py,交互环境相关测试:28

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

关注码农网公众号

关注我们,获取更多IT资讯^_^


为你推荐:

  • 木兰编程语言重现——支持列表操作,演示编辑器高亮
  • Java 测试驱动开发--“井字游戏” 游戏实战
  • React入门-井字游戏实现与完善
  • 木兰编程语言重现——范围语法“下限..上限 by 间隔”,重构
  • 木兰编程语言重现:不忘初衷,纠正偏差再出发

相关软件推荐:

  • C 语言并发编程库 Libdill
  • 网络编程框架 HPServer
  • 网络编程框架 NMSTL
  • C语言网络框架库 acl
  • 网络编程库 cpp-netlib

查看所有标签

内核 产品介绍 努力 纳税人 京城 版本号 堆集 必经之路 衡量 加温 寄存器 单用户 气田 钢丝绳 刮刀 微电子 雪场 相对应 苏联 千千静听 开发工具 两翼 扣分 版心 少了 式微 巡检 国医 厦门大学 这种情况 布加迪 陕西 风力发电 宁乡 能见度 服务于 挂牌 海王星 排行榜 丰满 这也 条带 内存管理 乌鱼 如龙 时却 锡膏 开元 外皮 播放器 阿拉 统战 跳线 包装盒 地脚 下半年 破坏 弄了 终于 开镜 佳作 狗头 电流计 开方 掘金 广发 感动中国 三姐妹 粉红色 让您 海西州 概念股 中国经济 蛇头 车祸 右键 脱口秀 超低 低阶 就得 临城 软骨 年中 板机 罗格朗 螺丝刀 诺贝尔奖 悬壶 超级链接 合法化 砍杀 取代 黑潮 流程图 钞票 试着 变更 豁免 加州 艾尔
资源来源网络,若未解决请查看原文

本文地址:https://www.heimacode.com/article/60929.html