欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    C语言编写的与电脑下棋程序代码(8页).doc

    • 资源ID:36772065       资源大小:288.50KB        全文页数:8页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言编写的与电脑下棋程序代码(8页).doc

    -C语言编写的与电脑下棋程序代码-第 8 页#include "stdafx.h"#include<iostream>using namespace std;void check(int i,int j);           /检查每条直线上的各方棋子的数量int other(int b,int c);void check_win();                  /检查是否胜利void begin(char ch);void computer();                  /电脑下棋void user();                      /用户下棋int a44,deep;int line332;                /全局变量,用来存放每条直线上的各方棋子数!                                  /第一维下标表示是行列还是对角线,第二维下标表示第几条直线                                  /第三维下标表示各方的棋子数!void main()   char ch;    cout<<"欢迎与本机下#字棋!您的棋子将用#表示,电脑的棋子用X表示n请选择先后手,输入u则您先手,输入c则电脑先手!(小写)n"<<endl;    do           cin>>ch;      if(ch!='u'&&ch!='c')  cout<<"您输入的数据不合法,请重新输入!"<<endl;  while(ch!='u'&&ch!='c');           /非法处理    if(ch='u') cout<<"您选择了您先手!n"<<endl;  else if(ch='c') cout<<"您选择了电脑先手n"<<endl;  begin(ch);void begin(char ch)   int i,j,k;  a11=1;  cout<<"n      1 | 2 | 3 n     n      4 | 5 | 6 n     n      7 | 8 | 9 n"<<endl;  for(i=1;i<4;i+)      for(j=1;j<4;j+)               if(j=1)         if(i=1);        else     aij=ai-13+1;        else     aij=aij-1+1;                                    /初始化棋盘   for(i=0;i<3;i+)      for(j=0;j<3;j+)          for(k=0;k<3;k+)              lineijk=0;  deep=0;  if(ch='u') user();  else computer();void computer()   int i,j,flag=0,m;                 /flag判断是否落子  for(i=0;i<3;i+)      for(j=0;j<3;j+)                        if (lineij0=2&&lineij1=0&&flag=0)                               m=other(i,j);                 if(m%3=0) am/33=40;check(m/3,3);                 else       am/3+1m%3=40;    check(m/3+1,m%3);          /40是#的ASCII码减48                 flag=1;                                                                           /当某条直线上用户有两棋子而我方无棋子时,在该直线的另一点落子             if (lineij1=2&&lineij0=0&&flag=0)                              m=other(i,j);                 if(m%3=0) am/33=40;check(m/3,3);                 else       am/3+1m%3=40;    check(m/3+1,m%3);            /当某条直线上我方有两棋子而对方无棋子时,在该直线的另一点落子                 flag=1;                          if (lineij1=1&&lineij0=0&&flag=0)                               m=other(i,j);                 if(m%3=0) am/33=40;check(m/3,3);                 else       am/3+1m%3=40;    check(m/3+1,m%3);           /当某条直线上我方有一棋子而对方无棋子时,在该直线的另一点落子                 flag=1;                                   if(flag=0)  if (a22=5)        a22=72;      flag=1;      check(2,2);                                  /优先下第5个位置  else      for(i=2;i<9&&flag=0&&aij=(i-1)*3+j;i+=2)              if(i%3=0) ai/33=40;check(i/3,3);        else       ai/3+1i%3=40;    check(i/3+1,i%3);        flag=1;                                                    /2,4,6,8其次      for(i=1;i<9&&flag=0&&aij=(i-1)*3+j;i+=2)              if(i%3=0) ai/33=40;check(i/3,3);        else       ai/3+1i%3=40;    check(i/3+1,i%3);        flag=1;                                                    /1,3,7,9再次    for(i=1;i<=3;i+)        cout<<"     "      for(j=1;j<=3;j+)          cout<<" "<<char(aij+48)<<" |"      cout<<"n      "<<endl;    deep+;  if(flag=1) user();  else check_win();void user()   int down;  cout<<"n轮到您下了,请输入您要下的棋子位置:"<<endl;    do    cin>>down;    if(down<1|down>9)          cout<<"数字不合法,请重新输入n"<<endl;    if (down%3=0&&adown/33!=down)|(down%3!=0&&adown/3+1down%3!=down)        cout<<"您所输入的位置已经有棋子了,请重新输入n"<<endl;  while(down<1|down>9|(down%3=0&&adown/33!=down)|(down%3!=0&&adown/3+1down%3!=down);  /判断输入是否异常    if(down%3=0) adown/33=-13;  check(down/3,3);  else          adown/3+1down%3=-13;check(down/3+1,down%3);   /-13是X的ASCII码减48  deep+;  computer(); int other(int b,int c)  int i,m;  if(b<2)       if (b=0)     m=3*c+1;     if (b=1)     m=c+1;     for(i=m;i<m+3;i+)              if(i%3=0)             if(ai/33=i) return i;             else;         else if(ai/3+1i%3) return i;                                               /水平与垂直直线的情况  if(b=2)      if(c=0)          if(a11=1) return 1;      if(a22=5) return 5;      if(a33=9) return 9;        if(c=1)          if(a13=3) return 3;      if(a22=5) return 5;      if(a31=7) return 7;                                            /对角线的情况void check(int i,int j)      if(aij=-13)                  line0i-10+;    line1j-10+;    if(i=1&&j=1)|(i=3&&j=3)|(i=2&&j=2)          line200+;    if(i=1&&j=3)|(i=3&&j=1)|(i=2&&j=2)          line210+;               if(aij=40)                  line0i-11+;    line1j-11+;    if(i=1&&j=1)|(i=3&&j=3)|(i=2&&j=2)          line201+;    if(i=1&&j=3)|(i=3&&j=1)|(i=2&&j=2)          line211+;      check_win();void check_win()  int i,j,k;  bool end=false;  char ch;  for(i=0;i<3;i+)      for(j=0;j<3;j+)          for(k=0;k<2;k+)            if(lineijk=3)                            if(k=1)    cout<<"您失败了,电脑获得了胜利"<<endl;                if(k=0)    cout<<"恭喜您,您获得了胜利"<<endl;                end=true;                        if(deep>=9)  cout<<"和棋!"<<endl;end=true;            if(end)                            cout<<"n您是否继续?是输入Y,按其余任意键结束本游戏!:"<<endl;                cin>>ch;                if(ch!='y') exit(0);                else                cout<<"n请选择先后手,输入U则您先手,输入C则电脑先手!n"<<endl;                  do                                  cin>>ch;                  if(ch!='u'&&ch!='c')  cout<<"您输入的数据不合法,请重新输入!"<<endl;                while(ch!='u'&&ch!='c');           /非法处理                  if(ch='u') cout<<"您选择了您先手!n"<<endl;                else if(ch='c') cout<<"您选择了电脑先手n"<<endl;                begin(ch);                            

    注意事项

    本文(C语言编写的与电脑下棋程序代码(8页).doc)为本站会员(1595****071)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开