導航:首頁 > 工程技術 > 軟體工程課程五子棋

軟體工程課程五子棋

發布時間:2021-08-15 10:46:25

『壹』 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;
}//這段代碼已經實現了悔棋。

與軟體工程課程五子棋相關的資料

熱點內容
蘇州假山景觀設計工程 瀏覽:862
哈爾濱工程造價招聘 瀏覽:937
建築工程土建勞務分包 瀏覽:632
道路監理工程師 瀏覽:476
安徽工程大學機電學院在本校嗎 瀏覽:370
河北工程大學保研率多少 瀏覽:287
有學質量工程師的書嗎 瀏覽:479
康樂縣建築工程公司 瀏覽:569
助理工程師二級 瀏覽:872
注冊安全工程師初級考試時間 瀏覽:901
食品科學與工程專業課題研究 瀏覽:881
工程造價圖紙建模 瀏覽:888
遼寧恆潤建設工程有限公司 瀏覽:93
實行施工總承包的工程項目 瀏覽:737
道路橋梁工程技術興趣愛好 瀏覽:316
密歇根理工大學電氣工程專業 瀏覽:388
廣西交通工程質量監督站 瀏覽:31
四川大學材料科學與工程學院考研參考書目 瀏覽:858
有線電視工程建設管理條例 瀏覽:270
雲南工程監理公司排名 瀏覽:673