|
仅供学习编程用参考,请勿用于非法用途!
2022年春节期间,我们有一位同事的老公对我说,她老公是敬老院的,有一位高位瘫痪老太太,只有一只右手勉强能动,其他部分基本上都只能靠他人照顾。她有一个爱好,就是喜欢打麻将,但是,没人陪她玩。她年轻时是一名教师,会使用电脑。正好我有这个游戏,在元宵前夕发给了她,听我同事老公说,当时老太太开心得像个小孩子,差点没从轮椅上蹦起来。
游戏中大部分素材都是我使用画图板一个点一个点描出来的,也有一部分素材是以前在网上下载的,然后我自己手工处理过。声音是我们夫妻俩录的,代码本来是我去年给我父亲写的游戏,当时用的是C语言,因为十五年前的2007年,我曾经用C语言写过一个棒棒手机的游戏,其核心算法差不多,只是界面不同罢了,所以,我给我父亲写的时候,为了方便移植,仍然使用的是C语言。因此,代码都是原创。带有AI,也就是常说的人工智能(zhang),对于一个人在电脑上打发时间是非常不错的。
值此编程大赛,我花了一些时间,将代码翻译成了易语言,在此投上一稿,重在参与嘛,希望来得不算太晚,也给有喜欢麻将的小伙伴们一个参考。
以下是我找到的我当年写的手机游戏截图:
2022-12-04更新:发现一处BUG。在“玩家定缺”函数中,增加了一个死循环,控制定缺结果。原来的问题是,如果点击的不是麻将,当前玩家就可以不用缺牌也能胡了。请照下面的代码修改可复制粘贴: 变量名 | 类 型 | 静态 | 数组 | 备 注 | I | 整数型 | | | T | 整数型 | | | 坐标 | 坐标型 | | | J | 整数型 | | | A | 整数型 | | | 如果 (游戏窗口.电脑托管 )J = 1 J = 2 变量循环首 (J, #玩家个数, 1, I )T = 判断是否为立手缺 (I )如果 (T ≥ 0 )游戏窗口.游戏数据.麻将定缺 [I ] = T 游戏窗口.游戏数据.麻将定缺 [I ] = 计算定缺花色 (I )变量循环尾 ()如果真 (游戏窗口.电脑托管 = 假)显示碰杠胡按钮 (, #碰杠胡按钮_正常 )A = 判断是否为立手缺 (1 )如果 (A ≥ 0 )游戏窗口.游戏数据.麻将定缺 [1 ] = A 坐标 = 取玩家暗牌坐标 (1, 13 )游戏窗口.气球提示框. 弹出提示框 (换算游戏坐标 (坐标.X + 游戏窗口.牌背.宽度 ÷ 4 ) + 游戏窗口.左边 + 游戏窗口.游戏.左边, 换算游戏坐标 (坐标.Y ) + 游戏窗口.顶边 + 游戏窗口.游戏.顶边 + 25, “请点击一张麻将定缺!”, -1, 假)判断循环首 (真)T = 等待操作事件 (游戏设置.等待时间 )判断 (T = #游戏事件_托管 )如果真 (游戏窗口.电脑托管 )显示碰杠胡按钮 (, #碰杠胡按钮_正常 )游戏窗口.游戏数据.麻将定缺 [1 ] = 计算定缺花色 (1 )跳出循环 ()判断 (T = #游戏事件_屏幕 )I = 取点击的麻将序号 (假)调试输出 (“取点击的麻将序号 (假)”, I )如果真 (I > 0 )游戏窗口.游戏数据.麻将定缺 [1 ] = 游戏窗口.游戏数据.暗牌 [1 ] [I ].花色 跳出循环 ()游戏窗口.游戏数据.麻将定缺 [1 ] = 计算定缺花色 (1 )跳出循环 ()判断循环尾 ()定缺动画 ()绘制屏幕 (游戏窗口.游戏数据.当前玩家编号 )
补充内容 (2022-12-8 11:31):
请注意,本源码没使用任何模块,仅使用了一个系统API用于取桌面工作区大小,如果你发现不能编译或调试运行,请检查IDE版本是否大于或等于V5.93。
补充内容 (2024-6-1 10:33):
最近给游戏机用C语言写了一个几乎一模一样的游戏,源码见:https://www.apm028.cn/h-nd-63.html |
评分
-
查看全部评分
本帖被以下淘专辑推荐:
- · 个人收藏|主题: 2515, 订阅: 80
- · 好帖|主题: 1239, 订阅: 44
- · 精品特辑|主题: 748, 订阅: 16
- · 私有专辑|主题: 6, 订阅: 0
|