本文记录的是2001年我大三那年假期制作小游戏的思路,希望给在读计算机专业的朋友们一些参考,如果还没来得及动手尝试的同学,一定要勇于动手。你们一定比我做得更好。

制作动力:

我有一个好朋友,因为我们住的很近,从小学就一起上下学,直到高考,我因为他选择了同一所学校。而我是一个不太喜欢玩牌的人,但是好友们在一起又少不了玩牌,可是我大学四年,连必修课“升级/拖拉机”都没学会,因为真的提不起兴趣。唯独和我这个好朋友能玩,因为我们玩的是两个人可以玩的规则——钓鱼、变色龙。主要是这俩游戏手里不用一次拿很多牌。

后来他搬家了,不能总来我家玩。大二时买了电脑,花了6040元,当时觉得自己好奢侈,但又不能不买。直到现在还忘不了母亲为了陪我去电子城,肥胖的身躯,大汗淋漓在大街上走,好艰辛。每次想起来都觉得自己不懂事可又没办法。于是,大三的那个暑假,我尝试在家自己动手。

都说pb适合数据库,我非要试试做游戏。制作成功以后,我可以在家自己玩,似乎又找到了好友在身边的感觉。如果我说“谨以此文献给……”,我这种“煽情缅怀”方式会被痛打,因为我这哥们还健在呢。

于是曾发布了另一篇博客:

从PowerBuilder+wiseinstaller程序发布看windows的system32目录共享_大橘的博客-CSDN博客

下面是制作过程的思路。由于我现在不用pb了,无法复制出源码给大家看。其实很简单,明白道理就行,主要是一定要勇于动手。

开始:

先构思一个大概的界面布局。设置好背景色,放几个控件上去,这样就装模作样的有点那个意思了。

纸牌本身就是一些图像控件,image或者picture之类的。要准备一些纸牌相关的图片文件给它做背景,这样就看起来更像了。先说一下我当年怎么得到这些图片的。一开始,我试图手动一个个去画,54张牌还有各种背景其实难度挺大的,而且做出来特别难看。从系统自带游戏里面截图也不好看。最后意外发现,使用vc++6.0可以打开任意类型的文件,而打开系统自带的纸牌游戏后,其中的各种图片资源就都有了,于是分别另存为,就有了54张牌和一些背景图片。当然,我当时用的win98,后来尝试win2000以后就不能这么干了。用vs打开是看不到那些图片资源的。不过还好,现在网络发达,可以下载高清文件。

于是,可以添加n个图片控件,比如54张牌加n张背景,都分别放在窗体上。就会看起来有点那意思了。

其中那几张大小王是我自己画的,但是再让我重复一遍,我肯定画不成一模一样了。当然系统游戏资源里面也有大小王,但是我就想做出自己风格的。你看大小王上面的英文字母,和系统游戏里的一模一样,因为我的大小王,就是在人家的基础上改出来的,就为了保留那几个字母。vc++6.0画出来的。等到这一步,初试动手应该有一点点成就感了。

让牌动起来:

但目前为止,这些牌还是死的,要让它们动起来。可以使用数组来批量处理。首先让这些牌统一移动到左上角发牌的位置,然后用一张背景图片盖在最上面,这样看起来好像一叠牌扣在那里。

这一步主要是尝试使用数组批量控制牌的位置。之后无论是洗牌、发牌、游戏过程中都要用到。其实想明白了实现起来挺简单的。我记得当时做的时候,只要看到这些牌都能有秩序地移动,就已经信心十足了。后面洗牌和发牌就没有费劲。

洗牌:

洗牌需要考虑随机性,开始我傻乎乎的调用随机函数,后来到发牌才发现,无论洗多少把,它是有规律的, 根本不随机。后来发现所谓随机函数可以给定种子值,而真正的随机还是要靠这个种子值来决定的。因为当初看过计算机周刊,记着一篇黑客攻击的文章上提过,很多网络传输的加密措施,是利用时间点计算出加密值的,而一些攻击手段正是通过抓包,然后利用时间点计算出当时的随机加密串,从而实现破解。

所以,我最终通过获取系统时间的秒数,作为种子值产生的随机效果。甚至让洗牌函数执行两次,相当于连洗两把,这就够随机了吧。因为它完全取决于游戏玩家操作程序的时刻。

视觉错觉:

上面洗牌我就提到过,把所有牌移动到左上角,最后用一张背景盖在最上面,让人看起来是所有牌扣在那里。这就是一种视觉错觉。

最早的时候我转不过弯来,总试图找一种能让控件翻转的方法。一直看着自己的手心手背,翻来覆去考虑。当时网络不发达,又没那么多资料,闭门造车相当不容易。最后终于想开,为什么不换个思路?让玩家看起来视觉效果满足要求就行了,费那劲呢。

当然,最初想不到办法的时候一度卡在那里,难道就停滞不前了吗?相信写过程序的朋友都有类似体会。我的建议是,一定要拿得起放得下,有些问题必要时应该学会暂时放下它,先干别的。千万别跟自己较劲。所以,当实在无法想明白“翻转控件”这个问题时,我干脆就不考虑它了。因此一开始这个游戏中,所有牌都是面对玩家的,也就是玩家可以看到所有牌,基本等于作弊。所以我在游戏中加入了“作弊码”功能。

实际上“翻转控件”最后是利用了“让控件至于顶层”这个特性解决的。想让某张牌扣过去时,在它正上方,用一张背景牌遮住就行了,看起来就是它翻转过去了。具体记不清了,貌似是:

vb中bring to front,pb中visible=true就可以实现至于顶层的操作。利用这种操作,结合牌的位置,可以制作出一张遮一张的效果,如下图:

可以按顺序将图片控件一张一张放在指定位置上,依次往右措一定距离并依次放在顶层,就像当初洗牌放背景一样。

流程控制:

通过调整图片控件位置,把牌按某种游戏规则发到每个人手里。到此为止,每完成一个函数应该调试或运行一下,这样你很快就能看到效果了。相信我,每次看到效果都会信心满满。

出牌,这是最难,最麻烦的一步,可以这样,先不要让d区(即玩家)参与游戏,牌照发,用循环控制,就是让其他三个电脑玩家(a,b,c)先依次运行过程,那当然是几秒钟内一把游戏就结束了,用messagebox()之类的东西在适当的位置显示你想知道的信息,一把游戏结束后,按游戏规则看一下结果是否正确(别忘了玩家手里还有牌)。比方说,钓鱼游戏最后数一下一共几条鱼,看看都对不对。

这一步最难,因为要考虑游戏规则。以钓鱼为例:

1、可以多张钓一张,不能一张钓多张;

2、牌面数字相加等于14才可以钓;

3、黑、红、花、片分别代表4/3/2/1四个分数;

4、每次钓鱼要设计个尽量智能的法则,让电脑玩家尽量聪明一些;

5、判断这一轮能否钓得起。要么钓不起,扔掉损失最小的牌。要么尽量利益最大化;

6、各玩家都手里没牌以后,统计成绩。

目前为止,都是电脑玩家自己在玩,玩游戏的人是没有参与的。等上面电脑玩家的规则都没问题之后,打断“上家”与“下家”的衔接,“上家”出牌以后,不要让它调用“下家”,什么都不用管就行了。这就相当于程序暂停,等待人类操作。下一步人类玩家通过操作触发下一个动作(“下家”出牌)。

这样,整个过程就完整了。

当然最后要考虑打包制作成安装程序,参考我的另一篇博客。

从PowerBuilder+wiseinstaller程序发布看windows的system32目录共享_大橘的博客-CSDN博客pb程序,wiseinstaller打包,自动配置ODBC,自动配置注册表,解决共享文件问题。https://blog.csdn.net/u012999461/article/details/123456798看看我当年做的游戏吧。这是我跟好友的回忆。

你知道最悲催的是啥?我自己设计的游戏,我有时候都赢不了!这还不算,我那哥们来了以后,赢了几把之后,觉得我本来就玩不过他,所以我设计的游戏思路也玩不过他,你们说该扁他不?

下面是变色龙:

就这么多吧。我那哥们,他当然不能经常赢电脑,偶尔赢而已,但是,所谓电脑的逻辑是死的,跟人比还是有差距的。

本文完。

PowerBuilder制作纸牌游戏相关推荐

  1. 装逼绝学!利用c++制作纸牌游戏,完爆赌神的扑克绝技!

    笔者在大学二年级期间,做过的一次C++程序设计:扑克牌的洗牌发牌游戏.具体内容是:除去大王和小王,将52张扑克牌洗牌,并发出5张牌.然后判断这5张牌中有几张相同大小的牌,是否是一条链,有几个同花等.那 ...

  2. 纸牌游戏炸金花设计制作(C语言)

    纸牌游戏炸金花设计制作 (C语言) 我是编程爱好者.早期使用windows时就被扫雷游戏,钻石棋游戏,红心大战游戏迷住.相信大家也都玩过吧.在学习VB6编程时就编制过钻石棋和红心大战那样的游戏.都是标 ...

  3. 纸牌游戏梭哈设计制作(C语言)

    纸牌游戏梭哈设计制作 (C语言) 我是编程爱好者.早期使用windows时就被扫雷游戏,钻石棋游戏,红心大战游戏迷住.相信大家也都玩过吧.在学习VB6编程时就编制过钻石棋和红心大战那样的纸牌游戏.都是 ...

  4. 纸牌游戏新版小猫钓鱼设计制作

    新版纸牌游戏<小猫钓鱼>设计制作 此游戏设计是我新创制的简单的卡牌游戏.属于儿童益智类游戏,适用于儿童的认知教育. 游戏规则很简单:找配对的牌消去. 游戏设置2个玩家对玩,鱼池置牌21张, ...

  5. 纸牌游戏设计制作(C语言)

    纸牌游戏设计制作 (C语言) 我是编程爱好者.早期使用windows时就被扫雷游戏,钻石棋游戏,红心大战游戏迷住.相信大家也都玩过吧.在学习VB6编程时就编制过钻石棋和红心大战那样的纸牌游戏.都是标准 ...

  6. 纸牌游戏21点设计制作(C语言)

    纸牌游戏21点设计制作 (C语言) 我是编程爱好者.早期使用windows时就被扫雷游戏,钻石棋游戏,红心大战游戏迷住.相信大家也都玩过吧.在学习VB6编程时就编制过钻石棋和红心大战那样的纸牌游戏.都 ...

  7. vue 纸牌游戏_Vue制作的纸牌

    vue 纸牌游戏 纸牌接龙 (VueSolitaire) Solitaire implemented by scratch on vue.js. It contains 3 types of soli ...

  8. 纸牌游戏设计制作《摸鱼2》(C语言)

    纸牌游戏设计制作<摸鱼2> 此游戏设计属于简单的纸牌游戏,是儿童益智类游戏.适用于儿童的认知教育. 游戏规则极为简单,设置纸牌在界面上显示牌背的盲牌形式,点击牌背显示牌面找出相同的牌配对消 ...

  9. java简单纸牌游戏_2020年最佳2人棋盘游戏:拼凑,Kingdomino等

    假期呆在房子里?这些是打发时间的完美游戏. 由于持续不断的 危机,今年的假期可能看起来要安静 得多.但是安静不一定意味着坏.我们中的大多数人都将放弃大型聚会,如果您要在家中聚会,那么 棋盘游戏 是打发 ...

  10. 纸牌游戏洗牌发牌排序算法设计

    纸牌游戏洗牌发牌排序算法设计 本文提供纸牌游戏设计制作的基础部分,即洗牌,发牌,牌张排序排列显示的算法. 以及游戏开始时间使用时间的显示.我是用简单的C语言编译器MySpringC在安卓手机上编写的. ...

最新文章

  1. Kernel那些事儿之内存管理(7) --- Slab(上)
  2. Java程序猿的JavaScript学习笔记(12——jQuery-扩展选择器)
  3. 深度学习100例-卷积神经网络(CNN)实现mnist手写数字识别 | 第1天
  4. 【Java基础】递归输出目录下所有文件路径
  5. Azkaban报错:Missing required property ‘azkaban.native.lib’
  6. java map扩容机制_java中ConcurrentHashMap的扩容机制是怎样的?详细解析
  7. 学生_课程_成绩_教师50个常用sql
  8. C++ 多态的实现及原理
  9. 机器学习算法总结之支持向量机(四)
  10. 如何设置硬盘安装linux,linux用硬盘安装时所设置选项
  11. VSCode中使用vue项目ESlint验证配置
  12. BGP Ethernet Virtual Private Network技术原理
  13. 跟着实例学eclipse插件开发--第一篇:翻译插件
  14. excel表格自动填充为汉字拼音首字母
  15. LeetCode231打家劫社Ⅱ(动态规划)
  16. 车载毫米波雷达测试方法
  17. 用EXCEL宏编写坐标转换
  18. 太空旅行时代到了!马斯克载人飞船发射成功!
  19. cocos2d-html5游戏图片资源选择
  20. 2017大同市职称计算机,2017年职称计算机考试计划

热门文章

  1. RF接口测试-post
  2. java web 项目分模块,javaweb项目模块划分
  3. 2022年第十二届MathorCup高校数学建模挑战赛
  4. denoiser插件_最新版AE/PR红巨人调色降噪插件合集 Magic Bullet Suite 13.0.9 Win/Mac
  5. Ubuntu 18.04 安装无线网卡
  6. 硬件课程设计:步进电机控制系统
  7. 推荐使用一个modbus调试助手
  8. android fastboot 最新版,用adb、fastboot拯救你的安卓手机
  9. 干货分享 | 工业信息数据库安全现状与技术分析
  10. vue阿里云点播播放器