freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-五子棋[★]-在線瀏覽

2024-10-17 23:21本頁面
  

【正文】 賦為0。else if(Y== 16)return 2。}else if(X== 16){if(Y== 1)return 6。elsereturn 7。else if(Y== 16)return 5。} }bool Retract(int *X, int *Y){int Temp_X, Temp_Y, TTop, FillType。*X= [TTop][0]。[*X][*Y]= 0。ChangeCoordinates(*X, *Y, amp。Temp_Y)。printf(“%s”, [FillType])。}else{Gotoxy(9, 65)。Sleep(300)。printf(“”)。} }三、調(diào)試運行 進入界面 棋盤的初始狀態(tài) 激戰(zhàn)中…… 游戲結(jié)束四、解決問題的關(guān)鍵這個五子棋的程序并沒有什么復雜的算法,只是利用了簡單的圖知識和一個棧的應用,在這里主要的關(guān)鍵問題就是如何將程序有條理的寫下來,有一個好的邏輯思維。五、課設(shè)總結(jié)剛開始寫這個程序,認為一定要用到 , 無奈電腦TC不兼容,因此只好強行來畫這個界面了,使用輸入法里面的制表符,效果還不錯,通過一長串的if … else … 最好還是畫出來了,這個時候覺得控制臺的簡單圖形還是能夠畫出來的,并且可以盡量去美化它的界面。在程序設(shè)計的過程中,尤其是為源程序加上悔棋的功能,這期間總是有許多意想不到的錯誤,比如加上后,有時走了5個連子棋,但是程序并沒有判定輸贏,而是可以繼續(xù)走、有時沒有五個卻已經(jīng)結(jié)束了,光標沒有復位,悔棋后,玩家的走棋順序沒有跟著改變……通過后來的一步步修改終于使得這些問題都一一解決了,比如說對 Prompt(提示)函數(shù)引進了返回值,判斷該次操作是否成功,如果下了棋則為 true,如果是悔棋就是 false 了,這樣便使得后面的操作更規(guī)范了和統(tǒng)一了。void HideCursor(){ CONSOLE_CURSOR_INFO cursor_info = {1, 0}。cursor_info)。int Base。} Sta。int MINBOX。char Graph[3][3]。Sta Stack。void Gotoxy(int x, int y)//這是光標的函數(shù) {COORD coord。= y。}void Logo(){char Wel[30]= { “Made By Lyushamp。 Mirs Chen” }。printf(“tt”)。i strlen(Wel)。Sleep(200)。}int Login(){int Mode, Skip= 0。if(!Skip){printf(“nn在這兒你能DIY(Do it youself!)你的棋子,每個棋子接受一個漢字”)。scanf(“%c”, amp。if(Request== 39。|| Request== 39。){printf(“玩家一的 DIY 棋子”)。[1][2]= 39。printf(“玩家二的 DIY 棋子”)。[2][2]= 39。}}printf(“nn請選擇先手玩家:___ nn”)。if(Request== 39。|| Request== 39。)Gotoxy(10, 16)。scanf(“%d”, amp。if(Mode!= 1amp。 Mode!= 2)return Mode% 2+ 1。}void InitChessBiard(){int TTop= 。= 0。= 0。// 棧的0號位存儲初始化的棋盤位置[TTop][1]= 8。[0]=“┏”。[2]=“┓”。[4]=“╋”。[6]=“┗”。[8]=“┛”。strcpy([2], “●”)。}bool Legal(int Point){if(Point 1|| Point MAX/ 2+ 1)return false。}bool Currect(int X, int Y){if(Legal(X)amp。 Legal(Y))return true。}void ChangeCoordinates(int _X, int _Y, int *X, int *Y){*X=(_X1)* 2。}void Draw(){// 畫棋盤for(int i= 1。j{if(i== 1){if(j== 1)printf(“┏”)。else if(j%2)printf(“┳”)。}else if(i== MAX){if(j== 1)printf(“┗”)。else if(j%2)printf(“┻”)。}else{if(j== 1){if(i% 2)printf(“┣”)。}else if(j== MAX){if(i% 2)printf(“┫n”)。}else{if(i% 2){if(j% 2)printf(“╋”)。}else{if(j% 2)printf(“┃”)。}}}}}// 畫棋子for(int i= 1。j{int Temp_X, Temp_Y。Temp_X, amp。if([i][j]== 1){Gotoxy(Temp_X, Temp_Y)。}else if([i][j]== 2){Gotoxy(Temp_X, Temp_Y)。}}} }int GetFillType(int X, int Y){if(X== 1){if(Y== 1)return 0。elsereturn 1。else if(Y== 16)return 8。}else{if(Y== 1)return 3。elsereturn 4。elsereturn false。if(!StackEmpty()){TTop= 。*Y= [TTop][1]。// 將該點置為真正意義上的空點FillType= GetFillType(*X, *Y)。Temp_X, amp。Gotoxy(Temp_X, Temp_Y)。return true。printf(“您已不能悔棋”)。Gotoxy(9, 65)。return false。int Temp_X, Temp_Y。char *Graph= [Ply]。printf(“按退格鍵悔棋”)。if(Ply== 1){printf(“玩家一走棋:”)。printf(“通過w s a d”)。Gotoxy(5, 65)。}Gotoxy(7, 65)。ChangeCoordinates(Move_X, Move_Y, amp。Temp_Y)。while(1){Opreat[0]= getch()。Move_X, amp。// 該次操作為偽操作else{Gotoxy(Temp_X, Temp_Y)。}}else{if(Opreat[0]== 13amp。 Ply== 2|| Opreat[0]== 32amp。 Ply== 1){if([Move_X][Move_Y]== 0){int TTop= ++。[TTop][0]= Move_X。printf(“%s”, Graph)。// 該次走棋操作有效}else{Gotoxy(9, 65)。Sleep(300)。printf(“”)。continue。Opreat[1]= getch()。amp。w39。W39。}}else if(Opreat[0]==32amp。 Opreat[1]== 80|| Opreat[0]== 39。|| Opreat[0]== 39。){if(Currect(Move_X+ 1, Move_Y)){Move_X+= 1。amp。a39。A39。}}else if(Opreat[0]==32amp。 Opreat[1]== 77|| Opreat[0]== 39。|| Opreat[0]== 39。){if(Currect(Move_X, Move_Y+ 1)){Move_Y+= 1。Temp_X, amp。Gotoxy(Temp_X, Temp_Y)。for(int i= X1, k= X+ 1。i, k++){int LastCount= Count。amp。}if(Legal(k)amp。 [k][Y]== Ply){Count++。if(Count== ){Flag= 1。}}// 左右查找是否滿足條件if(!Flag){Count= 1。Legal(i)|| Legal(k)。if(Legal(i)amp。 [X][i]== Ply){Count++。amp。}if(LastCount== Count)break。return true。for(int i1= X1, j1= Y+ 1, i2= X+ 1, j2= Y1。amp。amp。i1, j1++, i2++, j2){int LastCount= Count。amp。amp。}if(Legal(i2)amp。 Legal(j2)amp。 [i2][j2]== Ply){Count++。if(Count== ){Flag= 1。}}}// if(!Flag){Count= 1。Legal(i1)amp。 Legal(j1)|| Legal(i2)amp。 Legal(j2)。if(Legal(i1)amp。 Legal(j1)amp。 [i1][j1]== Ply){Count++。amp。amp。}if(LastCount== Count)break。return true。}void Play(int Fir){system(“cls”)。//SetConsoleTextAttribute(hConsole, FOREGROUND_RED| FOREGROUND_INTENSITY)。while(1){int TTop= 。printf(“游戲結(jié)束”)。if(Win(CurPly, [TTop][0], [TTop][1])){Gotoxy(11, 65)。elseprintf(“玩家二勝利n”)。}CurPly= CurPly% 2+1。}else if(){CurPly= CurPly% 2+1。}} }char Reset(){char Decide。printf(“是否重玩?”)。printf(“39。 Orz 39。n”)。Decide= getchar()。}int main(){system(“mode con cols=80 lines=33”)。InitChessBiard()。Play(Login())。Y39。y39。goto Loop。return 0。若設(shè)定的迷宮不存在通路,則報告相應信息。然而,只需要對迷宮求解的函數(shù)做小量修改,便可求得全部路徑。e)素Push(amp。S,e)返回其值 }ADT Stack;⒉ 迷宮的抽象數(shù)據(jù)類型定義: ADT Maze{ 數(shù)據(jù)對象:D:={aij,Start,end|aij,Start,end∈{} 0≤i≤m+2,0≤j≤n+2,m,n≥0}數(shù)據(jù)關(guān)系:R={} Row={|ai1,aij∈D i=1,?,m+2,j=1,?,n+2}第1頁操作結(jié)果構(gòu)造一個空棧,完成棧用e返回棧S的棧頂元將新的元素e壓入棧頂 刪除棧頂元素,并用eInitStack(amp。s)初始條件:已知目前迷宮狀態(tài), 傳過起始位置,和終止位置 操作結(jié)果:搜索迷宮,用sqstack s返回搜索所得路徑。typedef struct { int r。}PostType。//通道塊在路徑上的序號PostType seat。//通道塊指向下一通道塊的方向 }SElemType。//棧底指針SElemType *top。//棧的最大容量 }Stack。S)//初始化棧 { =(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType))。//存儲分配失敗。=STACK_INIT_SIZE。}//InitStackStatus StackEmpty(Stack S)//判斷棧是否為空,如果為空返回TRUE,否則返回FALSE { if(==)return TRUE。}//StackEmptyStatus Push(Stack amp。if(!)exit(OVERFLOW)。+=STACK_INCREMENT。return OK。S,SElemType amp。e=*。}//PopStatus DestroyStack(Stack amp。=。}//DestroyStack// define MAXLEN 20//迷宮包括外墻最大行列數(shù)目 typedef struct{int r。char adr[MAXLEN][MAXLEN]。 39。*39。39。39。//迷宮類型Status InitMaze(MazeType amp。printf(“輸入迷口的行數(shù)和列數(shù): ”)。,amp。//迷宮行和列數(shù)for(i=0。39。39。i[i][0]=39。[i][+1]=39。}for(i=1。j[i][j]=39。//初始化迷宮printf(“輸入障礙物%d的坐標(以坐標(0,0)結(jié)束輸入):
點擊復制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1