『壹』 java 课程设计游戏 五子棋 如何实现 五子棋的存档和读档功能
将棋盘上哪里有子哪里没子的信息写到文件
『贰』 五子棋技术和软件工程两个专业有什么区别
五子棋技术,他主要的就是讲述如何下五子棋,这是属于一种经济性的技术而软件工程,主要的就是我们的电脑网络一级的网络程序的研发,两者区别很大。
『叁』 java课程设计,做了网络五子棋,老师要我加复盘的功能,怎么实现思路
这个很简单。五子棋棋盘是一个二维数组,然后2数组里面有每个位置上只能有3个值,0,1,2,0表示没有棋子,1表示白棋,2表示黑棋。然后你用一个类把二维数组封装起来,然后保存每一步时候的状态就OK了。
『肆』 你觉得软件工程最有魅力的课程是什么
软件工程毕业生从事非技术岗的好处就是比市场人员更懂技术带来的沟通便利,他们往往可以跟技术人员更快更好地交流,从而更好地推进项目。所以不用担心好不好就业,重要的是搞清楚自己喜欢的工作方向并朝这方面努力哦!
『伍』 我是软件工程大一的,学完C语言不久,书本上的内容看的比较透了,但是现在导师叫我们去做五子棋的游戏。。
那个期盘问题是算法了吧 我和你一样 教学的书基础知识 学算法的话可以搞ACM 很多这种算法知识。
『陆』 数据结构课程设计 编写一个五子棋的程序 实现人与机对下的功能。
应该没人会帮你写、、听说貌似用到人工智能、、
『柒』 java课程五子棋怎么用myeclipse实现
eclipse
myeclipse
都是一个工具,只是辅助你写类的。
五子棋一般网上都有源码,只是功能健不健壮而已。
『捌』 五子棋的课程设计思路
#include <iostream>
#include <conio.h>
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>using namespace std;int ChessData[15][15] ={0};
int GuangbiaoData[2]={8,8};
int ChessStepData[255][2]={0};
void gotoxy(int x, int y) //gotoxy在TC中是在system.h库文件里的一个函数,但是在VC中没有这个函数,所以在网上找到了这个函数以实现同样的功能。
//只有这一个函数是网上找的,别的全部我自己写的。
{
COORD c;
c.X=x-1;
c.Y=y-1;
SetConsoleCursorPosition (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:cout<<"Move函数出错"<<endl;
}
GotoChess(GuangbiaoData[0],GuangbiaoData[1]);
}int Get(int *data) //该函数的功能是用户的按键,并转化为01234567(0表示输入错误,1表示上,2表示下,3表示左,4表示右,5表示落子,6表示悔棋,7表示退出。)
{ //并返回输入的用户号码(共同键返回3),错误则返回0
int temp;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:printf("Get函数出错");
}
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) cout<<'-';
else if (j%3==1) cout<<'|';
else cout<<' ';
cout<<endl;
}
GuangbiaoData[0]=8;GuangbiaoData[1]=8;
MoveToEnd();
cout<<"现在请用户1下棋 "<<endl;
cout<<"用户1使用 w,s,a,d移动光标,空格键落子"<<endl;
cout<<"用户2使用各方向键移动光标,回车键落子"<<endl;
cout<<"按下Backspace键悔棋,按下esc返回主菜单"<<endl;
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(" 温馨提示,游戏时请把窗口最大化,以达到最佳效果 ");
printf("________________________________________________________________________________");
int temp=0,i=0;
do
{
if ((temp=getch())==224)
{
temp=getch();
if (temp==72&&i!=0)
{
gotoxy(34,3+i);
printf(" ");
i--;
gotoxy(34,3+i);
printf("$");
gotoxy(0,0);
}
else if(temp==80&&i!=3)
{
gotoxy(34,3+i);
printf(" ");
i++;
gotoxy(34,3+i);
printf("$");
gotoxy(0,0);
}
} else if (temp==13) {*choice=i+1;return;}
else if (temp==27) exit(1);
else if (temp=='1'||temp=='2'||temp=='3'||temp=='4') {*choice=temp-48;return;}}while(1);
}int CannotDo(int v1,int v2,int MoveData,int choice) //第一个输入值为按键的用户号,第二个是本应该按键的用户号,第三个为按下键的对应值,第四个键代表游戏模式。
{
if (v1==3) return 0; //如果用户输入的为共用按键,则CannotDo为假else if (v1==0) return 1;//如果用户输入错误,则CannotDo为真
else if (v1!=v2&&choice==2) return 1; //如果不该此用户输入,而用户进行了输入,则CannotDo为真if (BeOut(MoveData)) return 1; //如果移动出边界则CannotDo为真
return 0;
}int CannotLuozi() //判断是否可以落子。
{
if (ChessData[GuangbiaoData[0]-1][GuangbiaoData[1]-1])
return 1;
else return 0;
}int luozi(int v) //玩家v落子。
{
ChessData[GuangbiaoData[0]-1][GuangbiaoData[1]-1]+=v*2;
if (v==1) cout<<'O';
else if (v==2) cout<<'X';
else cout<<"luozi函数出错";
if (win(v)) {MoveToEnd();printf("玩家%d获得了胜利! \n",v);for (int i=1;i<=240;i++) cout<<' ';GotoChess(GuangbiaoData[0],GuangbiaoData[1]);getch();return 1;}
MoveToEnd();
cout<<"现在请用户"<<v%2+1<<"下棋 ";
GotoChess(GuangbiaoData[0],GuangbiaoData[1]);
return 0;
}void HuiQi(int step) //输入的是当前的要悔的棋是第几步
{
GuangbiaoData[0]=ChessStepData[step-1][0];
GuangbiaoData[1]=ChessStepData[step-1][1];
ChessData[GuangbiaoData[0]-1][GuangbiaoData[1]-1]=0;
GotoChess(GuangbiaoData[0],GuangbiaoData[1]);
printf("-");
MoveToEnd();
cout<<"现在请用户"<<(step+1)%2+1<<"下棋 ";
GotoChess(GuangbiaoData[0],GuangbiaoData[1]);
}int DataGetAndChoose(int choice)
{
int MoveData=0,i=0,temp; //MoveData 0表示不可移动,1表示上,2表示下,3表示左,4表示右,5表示落子,6表示悔棋,7表示退出。
while(1)
{
loop: while (temp=Get(&MoveData),CannotDo(temp,i%2+1,MoveData,choice));
switch (MoveData)
{
case 1:
case 2:
case 3:
case 4:Move(MoveData);break;
case 7:return 0;
case 6:
if (i==0) {MoveToEnd();printf("现在无法悔棋 ");GotoChess(GuangbiaoData[0],GuangbiaoData[1]);}
else HuiQi(i--);
break;
case 5:
if (CannotLuozi()) goto loop;
if(luozi(i%2+1)) return 0;
ChessStepData[i][0]=GuangbiaoData[0];
ChessStepData[i][1]=GuangbiaoData[1];
i++;
break;
default:printf("DataGetAndChoose函数出错");break;
}
}
return 1;
}void ShowHelp()
{
system("cls");
printf("********************************************************************************");
printf("********************************************************************************");
printf("****** 单人游戏供用户一个人自己与自己下棋研究棋局之用 ******");
printf("****** 双人游戏中,用户1使用wsad控制方向,按空格落子 ******");
printf("****** 用户2按方向键控制方向,回车键落子 ******");
printf("****** 游戏过程中按esc返回主菜单 ******");
printf("****** 游戏过程中退格键悔棋 ******");
printf("****** 双人模式中某人下棋时,另一个用户无法控制光标与落子 ******");
printf("****** ******");
printf("****** 帮助 ******");
printf("****** 按任意键返回 ******");
printf("********************************************************************************");
printf("********************************************************************************");
getch();
}int main()
{
int choice=0;
system("color 5b");
choose: UserChoose(&choice);
if (choice<1||choice>4) goto choose;
if (choice==3) {printf("\n谢谢您的使用,再见 "); getch();return 0;}
if (choice==4) {ShowHelp(); goto choose;}
NewShow();
DataGetAndChoose(choice);
main();
return 0;
}//这段代码已经实现了悔棋。