1.急求论文 c语言开发五子棋的应用
//但是这些代码由于编译器的原因,在TC下仍无法运行。
请使用VC。#include
//只有这一个函数是网上找的,别的全部我自己写的。{ COORD c; c.X=x-1; c.Y=y-1; (GetStdHandle(STD_OUTPUT_HANDLE), c); } void GotoChess(int x,int y){x=3*x-2;y=2*y-1;gotoxy(x,y);} void Move(int MoveData) //输入参数为用户输入的方向(1表示上,2表示下,3表示左,4表示右){switch (MoveData){case 1:GuangbiaoData[1]-=1;break;case 2:GuangbiaoData[1]+=1;break;case 3:GuangbiaoData[0]-=1;break;case 4:GuangbiaoData[0]+=1;break;default:printf("Move函数出错");}GotoChess(GuangbiaoData[0],GuangbiaoData[1]);} int Get(int *data) //该函数的功能是用户的按键,并转化为01234567(0表示输入错误,1表示上,2表示下,3表示左,4表示右,5表示落子,6表示悔棋,7表示退出。
){ //并返回输入的用户号码(共同键返回3),错误则返回0int temp; B: temp=getch();if (temp==224) { temp=getch(); switch (temp) { case 72:*data=1;break; case 80:*data=2;break; case 75:*data=3;break; case 77:*data=4;break; default:goto B; } return 2;}else { switch (temp) { case 'w': case 'W':*data=1;return 1;break; case 's': case 'S':*data=2;return 1;break; case 'a': case 'A':*data=3;return 1;break; case 'd': case 'D':*data=4;return 1;break; case 13 :*data=5;return 2;break; case 32 :*data=5;return 1;break; case 8 :*data=6;break; case 27 :*data=7;break; default:*data=0 ;return 0;break; } return 3;}}void MoveToEnd(){gotoxy(1,30);}int LogicBeOut(int a,int b){if (a==-1||a==15||b==-1||b==15) return 1;else return 0;}int win(int v){int i=1,j=1,a=0,b=0;while (ChessData[a=GuangbiaoData[0]-i-1][b=GuangbiaoData[1]-i-1]==v*2&&!LogicBeOut(a,b)) i++;while (ChessData[a=GuangbiaoData[0]+j-1][b=GuangbiaoData[1]+j-1]==v*2&&!LogicBeOut(a,b)) j++;if (i+j-1>=5) return 1; i=1,j=1,a=0,b=0;while (ChessData[a=GuangbiaoData[0]+i-1][b=GuangbiaoData[1]-i-1]==v*2&&!LogicBeOut(a,b)) i++;while (ChessData[a=GuangbiaoData[0]-j-1][b=GuangbiaoData[1]+j-1]==v*2&&!LogicBeOut(a,b)) j++;if (i+j-1>=5) return 1; i=1,j=1,a=0,b=0;while (ChessData[a=GuangbiaoData[0]-i-1][b=GuangbiaoData[1]-1]==v*2&&!LogicBeOut(a,b)) i++;while (ChessData[a=GuangbiaoData[0]+j-1][b=GuangbiaoData[1]-1]==v*2&&!LogicBeOut(a,b)) j++;if (i+j-1>=5) return 1; i=1,j=1,a=0,b=0;while (ChessData[a=GuangbiaoData[0]-1][b=GuangbiaoData[1]-i-1]==v*2&&!LogicBeOut(a,b)) i++;while (ChessData[a=GuangbiaoData[0]-1][b=GuangbiaoData[1]+j-1]==v*2&&!LogicBeOut(a,b)) j++;if (i+j-1>=5) return 1;return 0;} void NewShow() //新棋局的开始{int i,j;for (i=0;i<15;i++) for (j=0;j<15;j++) ChessData[i][j]=0;system("cls");for (i=1;i<=29;i++){ for (j=1;j<=43;j++) if(i%2==1) printf("-"); else if (j%3==1) printf("|"); else printf(" "); printf("\n");}GuangbiaoData[0]=8;GuangbiaoData[1]=8;MoveToEnd();printf("现在请用户1下棋 \n");printf("用户1使用 w,s,a,d移动光标,空格键落子\n");printf("用户2使用各方向键移动光标,回车键落子\n");printf("按下Backspace键悔棋,按下esc返回主菜单\n");GotoChess(8,8);} int BeOut(int data){int Xiuzheng[2],New[2];switch (data){case 1:Xiuzheng[0]=0;Xiuzheng[1]=-1 ;break;case 2:Xiuzheng[0]=0;Xiuzheng[1]=1;break;case 3:Xiuzheng[0]=-1;Xiuzheng[1]=0;break;case 4:Xiuzheng[0]=1;Xiuzheng[1]=0 ;break;case 5:Xiuzheng[0]=0;Xiuzheng[1]=0 ;break;default:printf("BeOut函数出错");}New[0]=GuangbiaoData[0]+Xiuzheng[0];New[1]=GuangbiaoData[1]+Xiuzheng[1];if (New[0]>15||New[0]<1||New[1]>15||New[1]<1) return 1;else return 0; } void UserChoose(int * choice){ system("cls");printf("________________________________________________________________________________");printf("________________________________________________________________________________");printf(" $1.单人游戏 ");printf(" 2.双人游戏 ");printf(" 3.退出游戏 ");printf(" 4.游戏帮助 ");printf("________________________________________________________________________________");printf("________________________________________________________________________________");printf(" ");printf(" 开心五子棋 ");printf(" ");printf(" 出品人:张云聪 ");printf(" 学号:067108034 ");printf(" 指导老师:邵艳玲 ");printf(" ");printf(" ");printf(" 温馨提示,游戏时请把。
2.C语言程序设计 关于五子棋的
五子棋程序:#include using namespace std; int Hsheng(char a[][15]);//判断o子是否获胜的函数 int Bsheng(char a[][15]);//判断x子是否获胜的函数 int he(char a[][15]);//判断是否平局(也就是棋盘下满了)的函数 void qipan(char a[15][15])//执行输出棋盘命令 { for(int i=0;i { for(int j=0;j cout cout int main() { char a[15][15]; int x,y; for(int i=0;i for(int j=0;j a[i][j]=' '; qipan(a); while(1)//用循环语句执行o,x交替下子,这些while语句看起来似乎是个死循环~实际上都会经过break结束 { int a1=1; while(1) { for(;a1;) { cout cin>>x>>y; if(a[x][y]=='o'||a[x][y]=='x')//判断是否已有子 {cout else if(x>=15||y>=15){cout else { a[x][y]='o'; a1=0;} } break;} qipan(a);//下好o子后将棋盘显示 if(Hsheng(a))//判断o子是否已经获胜 { cout while(1)//下x子 { cout cin>>x>>y; if(a[x][y]=='o'||a[x][y]=='x'||x>=15||y>=15) { for( ; a[x][y]=='o'||a[x][y]=='x'; ) { cout cout cin>>x>>y;continue; } for ( ; x>=15||y>=15||x; ) { cout cout cin>>x>>y;continue ;} a[x][y]='x';break; } else { a[x][y]='x'; break; } } qipan(a);//再一次输出棋盘 if(Bsheng(a))//判断x子是否已经获胜 { cout if(he(a))//判断是否平局 { cout return 0; } int Hsheng(char a[][15]) { int i,j;//判断横着的5个是否都相等 for(i=0;i for(j=0;jif(a[i][j]=='o'&&a[i][j+1]=='o'&&a[i][j+2]=='o'&&a[i][j+3]=='o'&&a[i][j+4]=='o') return 1; for(j=0;j for(i=0;i if(a[i][j]=='o'&&a[i+1][j]=='o'&&a[i+2][j]=='o'&&a[i+3][j]=='o'&&a[i+4][j]=='o') return 1; for(i=0;i for(j=0;j if(a[i][j]=='o'&&a[i+1][j+1]=='o'&&a[i+2][j+2]=='o'&&a[i+3][j+3]=='o'&&a[i+4][j+4]=='o') return 1; for(i=0;i for(j=14;j>3;j--) if(a[i][j]=='H'&&a[i+1][j-1]=='o'&&a[i+2][j-2]=='o'&&a[i+3][j-3]=='o'&&a[i+4][j-4]=='o') return 1; return 0; } int Bsheng(char a[][15])//同o,只是改字符 { int i,j; for(i=0;i for(j=0;jif(a[i][j]=='x'&&a[i][j+1]=='x'&&a[i][j+2]=='x'&&a[i][j+3]=='x'&&a[i][j+4]=='x') return 1; for(j=0;j for(i=0;iif(a[i][j]=='x'&&a[i+1][j]=='x'&&a[i+2][j]=='x'&&a[i+3][j]=='x'&&a[i+4][j]=='x') return 1; for(i=0;i for(j=0;jif(a[i][j]=='x'&&a[i+1][j+1]=='x'&&a[i+2][j+2]=='x'&&a[i+3][j+3]=='x'&&a[i+4][j+4]=='x') return 1; for(i=0;i for(j=14;j>3;j--) if(a[i][j]=='x'&&a[i+1][j-1]=='x'&&a[i+2][j-2]=='x'&&a[i+3][j-3]=='x'&&a[i+4][j-4]=='x') return 1; return 0; } int he(char a[][15]) { for(int i=0;i for(int j=0;j { if(a[i][j]==' ')//当棋盘全部子都不是' '时才能return 1,即棋盘已下满 return 0; } return 1; } 希望能帮到你!。
3.求五子棋vc++做的毕业设计
VC++五子棋的设计与开发(开题报告+论文+程序)摘要:五子棋是起源于中国古代的传统黑白棋种之一。
现代五子棋日文称之为“连珠”,英译为“Renju”,英文称之为“Gobang”或“FIR”(Five in a Row的缩写),亦有“连五子”、“五子连”、“串珠”、“五目”、“五目碰”、“五格”等多种称谓。五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。
五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结晶。
本五子棋软件包括单机版和网络版。以VC++程序设计语言为工具,既实现了人机对弈,又实现了网络之间的双人对弈。
并提供了背景,播放音乐,“和棋”“悔棋”“认输”的功能,以及通过互联网的消息聊天等功能。关键词:五子棋 VC++ 人机对弈 网络对弈 目 录中文摘要(关键词) 3Abstract(keywords) 3前言 41 语言环境及设计思想概述 51.1开发环境 51.2 运行环境 51.3 设计思想 52 程序的主界面与相关的结果的运行 72.1人机对战 82.2网络对战 103 棋盘类——CTable 113.1 主要成员变量说明 113.1.1 网络连接标志——m_bConnected 113.1.2 棋盘等待标志——m_bWait与m_bOldWait 113.1.3 网络套接字——m_sock和m_conn 123.1.4 棋盘数据——m_data 123.1.5 游戏模式指针——m_pGame 123.2 主要成员函数说明 123.2.1 套接字的回调处理——Accept、Connect、Receive 123.2.2 清空棋盘——Clear 123.2.3 绘制棋子——Draw 133.2.4 左键消息——OnLButtonUp 133.2.5 绘制棋盘——OnPaint 133.2.6 对方落子完毕——Over 133.2.7 设置游戏模式——SetGameMode 133.2.8 胜负的判断——Win 144 游戏模式类——CGame 144.1 主要成员变量说明 154.1.1 棋盘指针——m_pTable 154.1.2 落子步骤——m_StepList 154.2 主要成员函数说明 154.2.1 悔棋操作——Back 154.2.2 初始化操作——Init 154.2.3 接收来自对方的消息——ReceiveMsg 164.2.4 发送落子消息——SendStep 164.2.5 胜利后的处理——Win 165 消息机制 165.1 消息机制的架构 165.2 各种消息说明 175.2.1 落子消息——MSG_PUTSTEP 175.2.2 悔棋消息——MSG_BACK 185.2.3 同意悔棋消息——MSG_AGREEBACK 185.2.4 拒绝悔棋消息——MSG_REFUSEBACK 185.2.5 和棋消息——MSG_DRAW 185.2.6 同意和棋消息——MSG_AGREEDRAW 195.2.7 拒绝和棋消息——MSG_REFUSEDRAW 195.2.8 认输消息——MSG_GIVEUP 195.2.9 聊天消息——MSG_CHAT 205.2.10 对方信息消息——MSG_INFORMATION 205.2.11 再次开局消息——MSG_PLAYAGAIN 205.2.12 同意再次开局消息——MSG_AGREEAGAIN 206 主要算法 206.1 判断胜负 206.2 人机对弈算法 226.2.1 获胜组合 236.2.2 落子后处理 236.2.3 查找棋盘空位 236.2.4 落子打分 246.2.5 防守策略 256.2.6 选取最佳落子 267 几点补充说明 278 心得体会 27参考文献 28致 谢 29。
4.C语言五子棋程序设计 谢谢
// 程序“五子棋第三方版.exe”运行时,把以前下棋的棋谱保存在“棋谱.txt”文件中, // 然后调用本程序。
// 本程序的作用是:首先读入以前的棋谱,然后调用函数“qxwz()”计算出计算机应该 // 下棋的位置,并保存在c中,然后把应下棋的位置写入文件“当前棋子.txt” #include typedef struct { char x; char y; } QZ; QZ qzwz(); //取得应下棋位置,返回值为QZ类型,其中的x,y两个成员代表应下棋位置 char qp[19][19]; //用于保存棋盘上每个点的状态,0--空,1--黑棋,2--白棋 void main() { FILE *fp; int tmp1,tmp2,tmp3; QZ c; /* 读入当前棋谱 */ if((fp=fopen("棋谱.txt","r"))==NULL) { printf("[棋谱.TXT]文件打开失败!\n"); return; } while(!feof(fp)) { tmp1=tmp2=tmp3=-1; fscanf(fp,"%d%d%d",&tmp1,&tmp2,&tmp3); if(tmp3!=-1) { qp[tmp1][tmp2]=tmp3; } } fclose(fp); c=qzwz(); if((fp=fopen("当前棋子.txt","w"))==NULL) { printf("[当前棋子.TXT]文件打开失败!\n"); return; } fprintf(fp,"%d,%d,%d",c.x,c.y,2); //将应下棋位置传送到文件中 fclose(fp); } QZ qzwz() { (把这里面的程序补充完整就好了) } 这个程序要求是: 1。只适用于人先下,机器后下的情况。
有了“五子棋第三方版.exe”来制作下棋界面,就只需要编写下棋算法,而不必考虑其它的问题了。 2.当运行“五子棋第三方版.exe”程序时,该程序接受人下棋位置,然后调用“wzq.exe”程序,由“wzq.exe”程序计算出机器的应对并写入到“当前棋子.txt”文件中(结束),机器的应对结果由“五子棋第三方版.exe”负责读入,并等待人下一步的应对。
3.要做的工作就是,完成“wzq.cpp” 中“qxwz()”函数的设计,使之能返回一个比较好的下棋位置。在设计过程中,可以增加全局变量以保存你认为有必要保存的数据,可以增加其它文件,用来保存你认为下次调用还有必要使用的数据,可以增加其它函数以方便下棋位置的计算过程。
总之,所给出的“wzq.cpp”程序只是一个框架,在不影响其功能的情况下,可以随意更改。
5.跪求一个单机版五子棋怎么设计和实现,最好是C语言版的
这个我都试过了的。
代码可以通过,也能得到结果。#include
6.关于五子棋的开发与实现的计算机毕业设计
关于五子棋的毕业设计, 电脑已经深入到日常工作和生活的方方面面,比如文字处理、信息管理、辅助设计、图形图像处理、教育培训以及游戏娱乐等。
Windows系统的推出使电脑从高雅的学术殿堂走入了寻常百姓家,各行各业的人们无须经过特别的训练就能够使用电脑完成许许多多复杂的工作。然而,虽然现在世界上已经充满了花样繁多的各种软件,但它们依然不能满足用户的各种特殊需要,人们还不得不开发适合自己特殊需求的软件。
Java语言作为一种面向对象的编程语言,具有分布式,可移植,高性能,多线程等特点。通过系统的学习,人们就可以使用它开发出功能齐全,满足特殊需求的应用程序。
Java语言易学易用,对学习者掌握技能,开拓思维都有很大的帮助。我作为一名学生,在系统的学习了Java语言之后,经常用它搞一些小程序。
这次课程设计,我就想将学过的Java语言中的各种技术综合起来,编写一个小游戏,既对自己学过的技能进行一次检验,也能系统地将学过的知识复习巩固,具体的还是去三七论文网看看.occo.j2me.game.gobang;import javax.microedition.lcdui.Display;import javax.microedition.midlet.MIDlet;public class Gobang extends MIDlet { GobangCanvas gobang;//定义游戏界面的Canvas类GobangCanvas的对象gobang public Gobang() { super(); gobang=new GobangCanvas(this);//生成GobangCanvas类的对象gobang } protected void startApp(){ Display.getDisplay(this).setCurrent(gobang); //在屏幕上绘出游戏见面gobang } protected void pauseApp(){ } protected void destroyApp(boolean arg0){ }} 游戏界面类:GobangCanvas.javaGobangCanvas类是游戏的核心类,继承自Canvas,此类将完成游戏的逻辑、绘图、控制、互动等所有功能,此类的框架代码如下:package com.occo.j2me.game.gobang;import javax.microedition.lcdui.Canvas;import javax.microedition.lcdui.Command;import javax.microedition.lcdui.CommandListener;import javax.microedition.lcdui.Displayable;import javax.microedition.lcdui.Graphics;public class GobangCanvas extends Canvas implements CommandListener{ protected Gobang gobang; public GobangCanvas(){ } public GobangCanvas(Gobang gobang){ this.gobang=gobang; } protected void paint(Graphics g) { }} 棋子类:Chesses.java此类定义了一个棋子,棋盘上的每一个棋子都对应着一个Chesses的对象,整个棋盘是一个Chesses类型的二维数组,源代码如下:package com.occo.j2me.game.gobang; public class Chesses { boolean isPlayer1; public Chesses() { } public Chesses(boolean isPlayer1) { this.isPlayer1=isPlayer1; }} 添加图形图像到现在,我们已经完成了游戏的一个基本框架,接下来,我们就可以来绘制游戏的每一个部件了首先是五子棋的一些初始设置,添加如下代码到GobangCanvas.java 。 int empty;//游戏界面到屏幕边缘的留空 int canvasW,canvasH;//画布的长和宽 int chessLength;//棋子的直径 int chessMapLength,chessMapGrid,chessGridLength; //棋盘的边长,棋盘一边格子数,每格宽度 int chessMapX,chessMapY;//棋盘左上角x,y坐标 int selectedX,selectedY;//选择框在棋盘格局上的x,y位置 boolean isPlayer1;//是否是玩家1 Chesses[][] chesses;//棋子数组 boolean newGame;//是否是新的游戏 public GobangCanvas(Gobang gobang){ newGame=true; empty=10; canvasW=getWidth()-empty;canvasH=getHeight()-empty; chessMapGrid=15; chesses=new Chesses[chessMapGrid+1][chessMapGrid+1]; if(canvasW>canvasH){ chessMapLength=canvasH-canvasH%chessMapGrid; chessMapX=(canvasW-chessMapLength)/2+empty/2; chessMapY=(canvasH。
8.经典五子棋的C++程序设计
#include (m)<
(m)<
(m)<
转载请注明出处众文网 » c语言五子棋毕业设计论文(急求论文c语言开发五子棋的应用)