设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
SCL编程实例100例-115-井字棋游戏
返回列表
发新帖
[西门子]
SCL编程实例100例-115-井字棋游戏
[复制链接]
240
|
0
|
2024-4-17 20:34:25
|
显示全部楼层
|
阅读模式
1 | 题目
编写一个程序实现井字棋游戏的功能,类似于五子棋,三子成线则获胜。功能上可以设置初级、中级、高级三个难度等级,玩家上可以设置人机对战或双人对战。
2 | 设计分析
井字棋为九宫格棋盘,程序上采用二维数组作为棋盘模型。本例只设计了人机对战模式,为了公平,利用随机数来确定先后手。玩家采用点击鼠标的落子方式,计算机采用随机数的落子方式。根据井字棋三子成线的获胜规则,只需判断同色棋子在九宫格中的行、列或对角线是否连成一条线即可。当棋盘下满棋子,而三子并未成线时即为平局。
3 | 创建功能或功能块
创建功能块FB,命名为“TicTacToe”。
4 | 定义接口变量
具体接口变量定义见下图:
定义布尔型二维数组输入变量playerMoves作为玩家落子动作;
定义整型静态变量statTurn作为落子顺序;
定义整型静态变量statRandomX和statRandomY作为计算机随机落子坐标;
定义整型静态变量statResult作为对弈结果;
定义整型二维数组静态变量statBoards作为棋子的落子状态。
5 | 程序代码
编写程序代码。如下图:
开始游戏后调用随机数函数来确定先后手,先手调用先手子程序,后手调用后手子程序,本例未单独设计子程序。判断行成线、列成线、对角线成线来确定胜负。棋盘下满而未决出胜负则为平局。
6 | 代码测试
在循环OB中调用FB-“TicTacToe”,调用时会自动创建背景数据块,命名为“InstTicTacToe”,该背景数据块可以用来监视和修改数据。本例中使用了HMI进行模拟演示。如下图:
一共有胜、平、负三种结果,本例只设计了初级模式和人机对战模式,有兴趣的炮友儿可以完善其它功能。
7 | 总结
学习IF语句的使用;
学习上升沿语句的使用;
学习定时器语句的使用;
学习FOR循环语句的使用;
学习WHILE循环语句的使用;
学习FC或FB在功能块FB中的调用方法;
学习功能块FB在循环组织块OB中的调用方法。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
注册哦
x
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
博图TIA
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』