嵌入式系統與實習期末專題 井字遊戲載入與使用 組員: 4970E037 黃繹銘 4970E012 袁竹緯 4970E105 郭撫龍
動機 相信每一個人都有童年,不管男女老少,都有過曾經純真的童年,但曾幾何時,這些天真美好通通都被這現實的社會所淹沒,為了讓每個人找回曾經的單純,我們設計了這個大家小時候都一定有玩過的小遊戲。
工作原理 arm-linux-gcc-o OX OX.c來進行編譯
編譯完後,回到minicom 按下Ctrl+A、Z開啟minicom功能表,接著輸入S傳送檔案 選著傳送的通訊協定,zmodem 上傳程式,傳送完後輸入任意鍵回到Embedded linux的terminal下 在minicom下輸入./OX執行程式 這是剛剛編譯好的程式,然後上傳到XSBase270開發板執行小遊戲
本程式是井行式圈叉連線的小遊戲,輸入1~9來應對井行上的數字,輸入的數字會轉變成O或X,當O或X為三個成線即達到連線獲勝,並顯示出O或X獲勝or平手,與是否在玩一次的選項,輸入n離開程式
程式碼 #include <stdio.h> #include <stdlib.h> int display1(char array1[]); //印出初始遊戲內容 int enter1(char e_array1[],char e1); //圈圈輸入 int enter2(char e_array2[],char e2); //叉叉輸入 int display2(char array2[]); //輸入後的遊戲內容 int change1(char c_array1[],char is_change1);//圈圈輸入修改 int change2(char c_array2[],char is_change2);//叉叉輸入修改 void win (char win_array[],int w_count); //判定勝負
main() { char array[9]= {'7' , '8', '9', '4', '5', '6', '1', '2', '3'}; //井字的九格 char ent1=0; //圈圈輸入的數字 char ent2=0; //叉叉輸入的數字 int count=0; //圈圈+叉叉所下的次數 display1(array); //印出遊戲初始內容 while(1) enter1(array,ent1); //呼叫函數進行圈圈輸入 count ++; display2(array); //列印出輸入修改後的數值 win (array,count); //判定勝負 enter2(array,ent2); //呼叫函數進行叉叉輸入 count++; display2(array); //列印出輸入修改後的數值 } system("PAUSE");
int display1(char array1[]) //印出初始遊戲內容 { int i; printf("===井字遊戲===\n"); printf("圈圈先下、叉叉後下。\n"); for(i=0;i<=8;i++) if((i+1)%3 == 0) printf("%c\n",array1[i]); if((i+1) == 3 || (i+1) == 6) printf("\n"); } else printf("%c | ",array1[i]); return 0;
int enter1(char e_array1[],char e1) //圈圈輸入 { int j; printf("\n請選擇一個數字:\n"); scanf(" %c",&e1); for(j=0;j<=8;j++) if(e_array1[j] == e1) change1(e_array1,e1); break; } else if(e_array1[j] != e1 && (j+1) == 9) printf("\n請重新輸入\n"); enter1(e_array1,e1); return 0;
int display2(char array2[]) //輸入後的遊戲內容 { int l; for(l=0;l<=8;l++) if((l+1)%3 == 0) printf("%c\n",array2[l]); if((l+1) == 3 || (l+1) == 6) printf("----------\n"); } else printf("%c | ",array2[l]); return 0;
int change1(char c_array1[],char is_change1) //圈圈輸入修改 { int k; for(k=0;k<=8;k++) if(c_array1[k] == is_change1) c_array1[k]= 'O'; } return 0;
void win (char win_array[],int w_count) //判定勝負 { char select; //select 選擇是否要再玩 if((win_array[0]=='O' && win_array[1]=='O' && win_array[2]=='O')||//判斷圈圈贏的八種情形 (win_array[3]=='O' && win_array[4]=='O' && win_array[5]=='O')|| (win_array[6]=='O' && win_array[7]=='O' && win_array[8]=='O')|| (win_array[0]=='O' && win_array[3]=='O' && win_array[6]=='O')|| (win_array[1]=='O' && win_array[4]=='O' && win_array[7]=='O')|| (win_array[2]=='O' && win_array[5]=='O' && win_array[8]=='O')|| (win_array[0]=='O' && win_array[4]=='O' && win_array[8]=='O')|| (win_array[2]=='O' && win_array[4]=='O' && win_array[6]=='O')) printf("圈圈獲勝\n"); printf("還要再玩一次嗎?(Y/N)\n"); scanf(" %c",&select); if(select == 'Y' || select == 'y') printf("==========================\n"); printf("\n"); main(); } else if(select == 'N' || select == 'n') printf("掰掰\n"); exit(1);
else //判斷平手的情形 { if(w_count == 9) printf("\n平手\n"); printf("還要再玩一次嗎?(Y/N)\n"); scanf(" %c",&select); if(select == 'Y' || select == 'y') printf("==========================\n"); printf("\n"); main(); } else if(select == 'N' || select == 'n') printf("掰掰\n"); exit(1);
討論 此作品非常具備環保概念,利用嵌入式裝置輕巧、易攜帶性、方便的特性,可以讓大家盡情的玩樂。 主要由pxa270開發版,Linux作業系統,Dev-C++撰寫