看实例玩编程(27):手把手教你猜数字游戏
软件世界
如火夏日,安度假日的同学们是否又要磨刀霍霍向游戏了呢?其实如果在玩的同时,也能自己动动手,做一两个的话,相信一定会更有收获。从这期开始,看实例玩编程栏目将陆续向大家介绍一些游戏开发方面的内容。俗话说“师傅带进门,修行在个人”。希望大家在看了一些简单的游戏制作之后,能对游戏开发有更多的认识。
一、制作起因
最近玩“轩辕剑三外传”,里面涉及一个小游戏。游戏规则是:从0-9中随机产生四个不重复的数字,如果你猜中一个数字并且数字的位置正确,则表示1阳,如果你猜中一个数字但数字的位置不正确,则表示1阴,最多猜10次,猜出4阳即可获胜。文曲星上好像也有这个游戏,我想干脆自己来制作这个游戏,工作之余开发开发智力。
二、构思流程图
我先设想电脑随机产生的数字用数组a[4]来表示,玩家选择的数字用数组b[4]来表示,l表示统计猜测次数,m、n分别统计阳、阴的个数。于是一个初步的流程图便诞生了。
三、制作界面
由于游戏本身不复杂,于是我只用了GroupBox、BitBtn、Button、Edit、Label这5类组件。界面如图1所示。我的设想是点击开始按钮随即产生四个随机数a[1]、a[2]、a[3]、a[4],分别用Edit7、Edit8、Edit9、Edit10表示。然后分别点击四个GroupBox中的数字按钮表示选择四个数字b[1]、b[2]、b[3]、b[4],分别用Edit1、Edit2、Edit3、Edit4表示,点击猜测后显示判断结果m、n(Edit5、Edit6)、及猜测次数l (Edit11),如果猜测不正确,重新确定 b[1]—b[4]的值,直至猜对为止,当然我设定最多只能猜10次,即l大于10将提示猜测失败。
四、完善程序
1.为了让游戏更加生动一些,让Edit1—Edit4为循环显示跳动的数字,当点击按钮时才停止并显示所按下的数字。
2.在猜测正确后,再点击猜测会出现次数统计有误,或者再点击数字按钮后重猜会出现反复的情况。所以要排除猜测时猜测的数据重复情况:
猜测按钮修改的代码为:
if(Edit1->Text==Edit2->Text||Edit1->Text==Edit3->Text||Edit1->Text==Edit4->Text||Edit2->Text==Edit3->Text||Edit2->Text==Edit4->Text||Edit3->Text==Edit4->Text)
{
MessageBox(NULL, “我都说了一百遍了,数字不能重复,重猜!”, “警告!”, MB_OK);
return;
}
这段代码要放在猜测按钮代码的前面,但应该放在判断是否在滚动的代码的后面。
3.在试玩时,同事抱怨每次玩都要准备纸和笔做记录,根据记录来判断,这样不仅麻烦,而且更重要的是还浪费国家的财产,强烈要求加入一个历史记录,显示所猜测的次数、数字以及判断结果,于是我加入了一个ListBox和GroupBox5,同时为了美观,我加入了6张图片(begin、lose、win1、win2、win3、win4),它们将在不同情况下显示,重新设计的游戏界面变更为图2所示。把lose、win1—win4、GroupBox5的Visible设为false,begin 的Visible设为true:
if(l<=10){str2=IntToStr(0)+IntToStr(l-1);}
else if(l>10){str2=IntToStr(l-1);}
str1=“ ”+str2+“ ”+IntToStr(b[1])+IntT
oStr(b[2])+IntToStr(b[3])+IntToStr(b[4])+“ ”+m+“阳”+n+“阴”;
ListBox1->Items->Add(str1);
4.为了增强游戏的趣味,我设定了一个特别数字7043,当第一次选择7043时,将提示4阳,相当于作弊码。
五、小结
游戏程序虽然很简单,但很有趣味。而且,从历史记录到作弊码一应俱全,可谓“麻雀虽小,五脏俱全”。
游戏源代码下载地址:http://www.cpcw.com/27/guess.txt
游戏程序下载地址:http://www.cpcw.com/27/guess.exe

