小弟我的第一个C++小游戏——纸牌接龙

【分享】我的第一个C++小游戏——纸牌接龙
自己做的第一个C++小游戏,就是纸牌接龙。用的最原始的控制台程序写的。玩起来比较纠结,因为字体太小,而且花色不太好辨认!输入的时候一定要输入整数,因为没有设置纠错机制。希望大家多多支持哈!

http://download.csdn.net/detail/u011873969/6429045

花了八个小时写的,真是到了废寝忘食的地步了呀!编写的过程中发现个问题,就是这个问题让我纠结了好几个小时,直到最后通过各种手段才发现。至今不懂为何会有这个问题。这个问题就是:

设column是一个vector<card>::size_type类型的变量,其中card是一个已经定义好的class,那么
不管column取值多少,好像条件
column-7 >0
都为真!
只有改写成
column > 7
才能得到想要的效果!

这究竟是什么情况?是因为column和7不是同一个类型的吗?
游戏 c++ 控制台

------解决方案--------------------
vector<card>::size_type是无符号整型, 也就是说如果column小于7, 那么column-7得到的值就是一个非常大的无符号正数, 其预算结果是必定大于0的.
要么把column换成有符号的整数, 要么就用楼主说的column>7做判断.
------解决方案--------------------
引用:
Quote: 引用:


做减法肯定得到大于等于0的正整数, 因此和0比较没有意义
但是直接和7比较, 小于7的数就有意义了


Hmmm,好纠结的样子。计算机判断x>y的时候难道不是判断x-y与0的大小关系吗?

举个栗子:
1 - 2 > 0, 如果这里的1是无符号整型, 那么1-2得到的是0xffffffff, 这个值是大于0的, 因此判断结果为true
1 > 2, 怎么看结果都为false吧...

注:楼主可以再顺便看下隐式类型转换

------解决方案--------------------
引用:
Quote: 引用:


做减法肯定得到大于等于0的正整数, 因此和0比较没有意义
但是直接和7比较, 小于7的数就有意义了


Hmmm,好纠结的样子。计算机判断x>y的时候难道不是判断x-y与0的大小关系吗?

这个是咱们的数学思想,是没错的。但是在计算机领域内分为无符号和有符号的整数,假设内存里面某个byte就是存的值0xff,当你把它当做无符号整形的数据读出来的时候,看到的这个byte就是255,但是当你把它当成有符号的整数读出来的时候呢?你可以试试看。