首 页 教育新闻课件中心论文中心教学教案试题中心语文专题综合下载技术教程公务员  
设为首页
加入收藏
联系我们
您当前的位置:中国教育资源网 -> 技术教程 -> 软件开发 -> Delphi -> 技术内容 退出登录 用户管理

用Delphi设计“抢三十”游戏Delphi教程

论文作者:佚名  论文来源:不详  论文发布时间:2006-6-19 22:22:23  论文发布人:chjchjchj

减小字体 增大字体

  必胜的原理

  如何才能轻易获胜呢?这就要去寻找其中的规律。我制作了一个小程序,让你可以和计算机单挑。程序界面如图。


  若你先报数,不是我夸口,你是一定斗不过计算机的;若计算机先报数,那么就看你的了,如果你犯任何一次错误,计算机都会抓住机会反败为胜。听起来这个程序好像很智能,其实它的道理很简单:

  获胜的必要条件是:牢牢抓住3的倍数。具体来讲就是把对方报的数字与3求模,若值为1,则报的数字为对方的数字加2;若值为2,则报的数字为对方的数字加1;否则的话就随意报1或者2。这样在游戏中就能紧紧抓住3的倍数,坚持到最后就是胜利者。
把这个算法用程序实现后,电脑在与人对局的时候就智能化了。试问不知道此算法的人会是电脑的对手吗?

  关键代码

  在有了程序的算法和界面之后,要编写完整的程序就不是很困难了。

  最关键的显示实报的数字的Edit控件的Onchange代码:

procedure TForm1.Edit1Change(Sender: TObject);
 begin
  if flag=false then //得到控制权,计算机开始自动报数
  begin
   temp1:=s+1;
   temp2:=s+2;
   if (temp1 mod 3)=0 then //你报的最后的数字与3取模,若为1,则计算机加2
   begin
    s:=temp1;
    j:=1;
   end
   else if (temp2 mod 3)=0 then //你报的最后的数字与3取模,若为2,则计算机加1
   begin
    s:=temp2;
    j:=2;
   end
   else //否则计算机随机报一个数字或两个数字
   begin
    randomize();
    j:=random(2)+1;
    s:=s+j;
   end;
   Button2.Enabled :=true; //计算机报数完毕后把报数按钮设为可用
   Button3.Enabled :=true;
   Button2.Caption :=IntToStr(s+1); //并把报数按钮的Caption设为将要选择的数字
   Button3.Caption :=IntToStr(s+2);
   Edit2.Text :=IntToStr(j); //显示计算机报的个数
   ListBox1.Items.Add(计算机报的个数: +IntToStr(j));//写入到历史记录
   flag:=true; //交出控制权
   Edit1.Text :=IntToStr(s); //显示计算机实际报的数字
   if s>=30 then //判断游戏是否结束
   begin
    Button2.Enabled :=false;
    Button3.Enabled :=false;
    ShowMessage(嘿嘿,想赢我?动动脑筋再来吧!);
   end;
  end;
end;
  难点讲解

  用一个BOOL变量来交接控制权,也就是什么时候该由你报数,什么时候该由计算机报数。

  Form1.Edit1Change处理时要注意,Edit1显示的是计算机实际报的数字。当控制权移交到计算机时,计算机处理完报数程序后要做两件事:1交出控制权,2刷新Edit1的显示。这里要相当小心,看起来这两件事的先后顺序不重要,可实际上要特别注意:如果先刷新Edit1的显示再交出控制权的话,数据就会溢出!

  道理是这样的,当程序执行到Edit1的显示刷新时,程序不再向下执行而是回到本段程序的第一行开始依次执行,当执行到这里时再次返回到第一行……死循环就产生了!所以一旦遇到刷新Edit1的显示时,请仔细考虑所做的事情是否存在先后顺序,因为执行Edit1的显示代码后程序将不再向下继续执行,而是跳到TForm1.Edit1Change事件中,请仔细体会这段程序。

  源代码下载

[] [返回上一页] [打 印] [收 藏]  
 ∷相关技术评论  (评论内容只代表网友观点,与本站立场无关!) [查看发表评论...]
 
 中国教育资源网免费技术教程下载中心-站内广告 站内广告 中国教育资源网免费技术教程下载中心-站内广告 
 中国教育资源网站内搜索 站内搜索 中国教育资源网站内搜索 
 

   
 中国教育资源网免费技术教程下载中心-栏目导航 栏目导航 中国教育资源网免费技术教程下载中心-栏目导航 
· C · Delphi
· Java · vb
 
中国教育资源网免费技术教程下载中心-相关教程  相关技术 中国教育资源网免费技术教程下载中心-相关教程
· 利用Delphi编程发送
· 用Delphi 3.0编制MP
· 用Delphi制作动态有
· 用Delphi4实现风Wor
· 用Delphi检测IE使用
· 用Delphi制作DLL的方
· 教你如何用Delphi生
· 用Delphi制作中国式
· 用Delphi编程时如何
· 资源文件在DELPHI中
 中国教育资源网免费技术教程下载中心-本月热门教程 本月热门 中国教育资源网免费技术教程下载中心-本月热门教程 
 
 中国教育资源网免费技术教程下载中心-本日热门论文 本日热门 中国教育资源网免费技术教程下载中心-本日热门论文 
 
关于本站 - 网站帮助 - 免费课件 - 美容 - 绿色软件 - 软件下载 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 网站留言
浙ICP备06010405号 Email:cnkjz@163.com 技术支持:名流设计
版权所有 Copyright© 2002-2004 名流