ImageVerifierCode 换一换
格式:DOCX , 页数:39 ,大小:21.04KB ,
资源ID:6044654      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6044654.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(五子棋游戏程序开发实验报告.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

五子棋游戏程序开发实验报告.docx

1、五子棋游戏程序开发实验报告代码:#include#includechar chess2020; /棋盘int draw151545; /记录平局int flag2020; /判断是否已有落子int mark2020; /判断是否历遍该处int count2020,num=0; /每个点构成活三、活四、冲四的数目int score=0; /记录每个点的可去性int round=0; /记录回合数int victor=0; /victor=1时表胜利,victor=-1时表失败int act_two_num=0,act_one_num=0;int dead_three_num=0; /记录活二(一

2、)数char chess_kind11120=x+xxx,xx+xx,xxx+x,xxxx+,+xxxx, +xxx+,+x+xx+,+xx+x+,+xxx+,+xxxx+,xxxxxx;char chess_kind21120=o+ooo,oo+oo,ooo+o,oooo+,+oooo, +ooo+,+o+oo+,+oo+o+,+ooo+,+oooo+,oooooo;char chess_kind3620=+xx+,+xx+,+xx+,+x+x+,+x+x+,+x+x+;char chess_kind4620=+oo+,+oo+,+oo+,+o+o+,+o+o+,+o+o+;char che

3、ss_kind5420=+x+,+x+,+x+,+x+;char chess_kind61420=+o+,+o+,+o+,+o+;char chess_kind71020=ox+x+x,ox+xx+,ox+xx,oxx+x,oxxx+, x+x+xo,+xx+xo,xx+xo,x+xxo,+xxxo;char chess_kind81020=xo+o+o,xo+oo+,xo+oo,xoo+o,xooo+, o+o+ox,+oo+ox,oo+ox,x+xxo,+ooox;/初始化mark,count,drawvoid initial() int i=0,j=0,k=0,l=0; for(i=0;

4、i15;i+) for(j=0;j15;j+) for(k=0;k4;k+) for(l=0;l15;l+) drawijkl=0; for(i=0;i15;i+) for(j=0;j15;j+) markij=0; countij=0; /选择棋色int chose_color() int chose; printf(ttttx:黑棋 o:白棋 nn); printf(tttt选择棋色n); printf(tttt1 黑棋n); printf(tttt2 白棋n); printf(tttt); scanf(%d,&chose); if(chose=1) return 1; else retu

5、rn 0;/平局检测int check_draw(char oppsite) int r=0,c=0,i=0,j=0,k=0; int l=0,m=0,n=0,p=0; int *x4=&p,&l,&m,&l; int *y4=&l,&p,&l,&l; for(r=0;r15;r+) for(c=0;c15;c+) for(k=0;k4;k+) for(i=0;i=0;j-) l=i-j; m=j-i; if(judge_boundary(r+1)+*xk,(c+1)+*yk)=1) drawrcki=1; break; else if(chessr+*xkc+*yk=oppsite) dra

6、wrcki=1; break; for(r=0;r15;r+) for(c=0;c15;c+) for(k=0;k4;k+) for(i=0;i15|row15|col1) return 1; else return 0;/打印棋盘void print_chessboard() int i=0,j=0,k=0; printf(nnnnn); printf(tttt 五子棋nn); printf(tttto:白棋 x:黑棋nn); printf(tt); printf(%-4d,0); for(i=1;i17;i+) printf(%-3d,i); printf(ntt%-3d,1); for(

7、i=0;i15;i+) for(j=0;j15;j+) printf(%2c ,chessij); if(i+216) printf(%3dntt%-3d,i+1,i+2); printf(%3dntt,15); printf(%-4d,0); for(i=1;i17;i+) printf(%-3d,i); /活三、活四、冲四的判断与搜索/判断存放的棋子是否形成活三、活四、冲四int judge_active34(char active_three20,char active_four20,char player) int i=0,j=0; /*for(i=0;i6;i+) printf(*a

8、ctive_three%d=%sn,i,active_threei); */ if(player=x) /活三 for(i=0;i11;i+) for(j=0;j6;j+) if(strcmp(chess_kind1i,active_threej)=0) if(i=10) return -1; else return i+1; /printf(nchess_kind1=%s,active_three=%sn,chess_kind1i,active_threej); /活四、冲四 for(i=0;i11;i+) for(j=0;j5;j+) if(strcmp(chess_kind1i,acti

9、ve_fourj)=0) /printf(i=%d,%sn,i,active_fourj); return i+1; else for(i=0;i11;i+) for(j=0;j6;j+) /printf(nchess_kind2=%sn,chess_kind2i); if(strcmp(chess_kind2i,active_threej)=0) if(i=10) return -1; else return i+1; /活四、冲四 for(i=0;i11;i+) for(j=0;j5;j+) if(strcmp(chess_kind2i,active_fourj)=0) return i+

10、1; return 0;/横向搜索int horizontal(int r,int c,char player) int i=0,j=0; char active_three2020,active_four2020; int temp; /活三 for(i=0;i=0;j-) /printf(j=%dyesn,j); if(judge_boundary(r+1),(c+1)+i-j)=1) active_threei5-j= ; active_threei1=0; break; else active_threei5-j=chessrc+i-j; active_threei6=0; /if(r

11、+1=7&c+1=2) /printf(n%d,%d active_three=%sn,r+1,c+1,active_threei); /活四、冲四 for(i=0;i=0;j-) if(judge_boundary(r+1),(c+1)+i-j)=1) active_fouri4-j= ; active_threei1=0; break; else active_fouri4-j=chessrc+i-j; active_fouri5=0; /printf(n%d,%d active_four=%sn,r+1,c+1,active_fouri); temp=judge_active34(act

12、ive_three,active_four,player); return temp;/纵向搜索int vertical(int r,int c,char player) int i=0,j=0; char active_three620,active_four520; int temp; /活三 for(i=0;i=0;j-) if(judge_boundary(r+1)+i-j,(c+1)=1) active_threei5-j= ; active_threei1=0; break; else active_threei5-j=chessr+i-jc; active_threei6=0;

13、/printf(nr=%d,c=%d,active_three=%sn,r+1,c+1,active_threei); /活四、冲四 for(i=0;i=0;j-) if(judge_boundary(r+1)+i-j,(c+1)=1) active_fouri4-j= ; active_fouri1=0; break; else active_fouri4-j=chessr+i-jc; active_fouri5=0; / if(r+1=1&c+1=5) /printf(%c,active_fouri4-j); /if(r+1=1&c+1=5) /printf(nr=%d,c=%d,acti

14、ve_four=%sn,r+1,c+1,active_fouri); temp=judge_active34(active_three,active_four,player); /printf(temp=%dn,temp); return temp;/左斜搜索int left_oblique(int r,int c,char player) int i=0,j=0; char active_three2020,active_four2020; int temp; /活三 for(i=0;i=0;j-) if(judge_boundary(r+1)-i+j,(c+1)+i-j)=1) activ

15、e_threei5-j= ; active_threei1=0; break; else active_threei5-j=chessr-i+jc+i-j; active_threei6=0; /活四、冲四 for(i=0;i=0;j-) if(judge_boundary(r+1)-i+j,(c+1)+i-j)=1) active_fouri4-j= ; active_fouri1=0; break; else active_fouri4-j=chessr-i+jc+i-j; / if(r+1=7&c+1=1) /printf(%c,active_fouri4-j); active_four

16、i5=0; temp=judge_active34(active_three,active_four,player); return temp;/右斜搜索int right_oblique(int r,int c,char player) int i=0,j=0; char active_three2020,active_four2020; int temp; /活三 for(i=0;i=0;j-) if(judge_boundary(r+1)+i-j,(c+1)+i-j)=1) active_threei5-j= ; active_threei1=0; break; else active_

17、threei5-j=chessr+i-jc+i-j; active_threei6=0; /printf(nr=%d,c=%d,active_three=%sn,r+1,c+1,active_threei); /活四、冲四 for(i=0;i=0;j-) if(judge_boundary(r+1)+i-j,(c+1)+i-j)=1) active_fouri4-j= ; active_fouri1=0; break; else active_fouri4-j=chessr+i-jc+i-j; active_fouri5=0; /if(r+1=8&c+1=9) / printf(nr=%d,c

18、=%d,active_four=%sn,r+1,c+1,active_fouri); temp=judge_active34(active_three,active_four,player); return temp;/输入落子位置void input_position(int chose) int row,col; printf(nntt 输入落子位置:); input: scanf(%d %d,&row,&col); if(judge_boundary(row,col) printf(ntt下标越界请重新输入:); goto input; if(flagrow-1col-1=1) prin

19、tf(ntt该位置已有已有落子请重新输入:); goto input; if(chose=1) /printf(okn); flagrow-1col-1=1; chessrow-1col-1=x; else flagrow-1col-1=1; chessrow-1col-1=o; /printf(yesn); system(cls);/判断是否五子void five_point(int chose,char object) int r,c; char temp; int result4; if(chose=1) temp = x; else temp = o; int i=0,j=0,k=0,

20、l=0; for(r=0;r15;r+) for(c=0;c15;c+) if(judge_boundary(r+1,c+1)=1|victor=1|victor=-1) return; /num+; /printf(num=%d,r=%d,c=%dn,num,r+1,c+1); if(object=p) /禁手的判断 result0=horizontal(r,c,temp); result1=vertical(r,c,temp); result2=left_oblique(r,c,temp); result3=right_oblique(r,c,temp); for(i=0;i4;i+) i

21、f(resulti=-1) victor=-1; return; for(i=0;i5;i+) if(chessr+ic+i!=temp|judge_boundary(r+1+i,c+1+i)=1) break; for(j=0;j5;j+) if(chessr+jc-j!=temp|judge_boundary(r+1+j,c+1-j)=1) break; for(k=0;k5;k+) if(chessr+kc!=temp|judge_boundary(r+1+k,c+1)=1) break; for(l=0;l5;l+) if(chessrc+l!=temp|judge_boundary(

22、r+1,c+1+l)=1) break; /num+; /printf(temp=%c,num=%d,r=%d,c=%dn,temp,num,r,c); /printf(i=%d,j=%d,k=%d,l=%dn,i,j,k,l); if(i=5|j=5|k=5|l=5) victor=1; return; else for(i=0;i=6&resulti=2) victor=-1; return; /电脑计算每一种下法的得分void accum_score(int r,int c,int route,int dirction,char computer) int zero=0; int opp

23、_route; int *x8=&zero,&zero,&route,&opp_route,&route,&opp_route,&opp_route,&route; int *y8=&zero,&opp_route,&zero,&zero,&route,&opp_route,&route,&opp_route; /printf(route=%dn,route); if(route=3) score+; for(route=0;route3;route+) opp_route=-route; if(chessr+*xdirction-1c+*ydirction-1=computer) score

24、+; /printf(score=%dn,score); return;/死三的判断int judge_dead3(char dead_three20,char side) int i,j; for(i=0;i10;i+) for(j=0;j6;j+) if(side=x) /printf(chess_kind3=%s,active_two=%sn,chess_kind3i,active_twoj); if(strcmp(chess_kind7i,dead_threej)=0) return i+1; else if(side=o) if(strcmp(chess_kind8i,dead_threej)=0) return i+1; return 0;/死三的搜索void search_dead_three(int r,i

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1