總共36格,內為A~R x2 隨機排列的表格。
索引從0開始,35結束。
依指示輸入想翻開的卡牌,若該次兩張牌相同,則成功找出;反之則蓋回去。
沒有防呆,不能輸入0~35外的數字、已被翻開的卡牌索引、每次不得輸入兩相同索引。
(也許還有其他錯誤?)
程式碼:
#include <iostream> using namespace std; int main() { srand(time(NULL)); int index[18]={0},counter=0; char map[6][6]={'*'},alpha[6][6]; for(int i=0;i<6;i++) for(int j=0;j<6;j++) map[i][j]='*',alpha[i][j]='*'; for(int i=0;i<6;i++) { for(int j=0;j<6;j++) { int letter=rand()%18; while(index[letter]>=2) letter=rand()%18; alpha[i][j]=char(letter+'A'); index[letter]++; } } for(int i=0;i<6;i++) { for(int j=0;j<6;j++) cout<<alpha[i][j]<<" "; cout<<endl; } while(counter<36) { int cardIndex1,cardIndex2; cout<<"Please enter card index: "; cin>>cardIndex1; for(int i=0;i<6;i++) { for(int j=0;j<6;j++) { if(cardIndex1/6==i&&cardIndex1%6==j) cout<<alpha[i][j]<<" "; else cout<<map[i][j]<<" "; } cout<<endl; } cout<<"Please enter card index: "; cin>>cardIndex2; for(int i=0;i<6;i++) { for(int j=0;j<6;j++) { if(cardIndex1/6==i&&cardIndex1%6==j) cout<<alpha[i][j]<<" "; else if(cardIndex2/6==i&&cardIndex2%6==j) cout<<alpha[i][j]<<" "; else cout<<map[i][j]<<" "; } cout<<endl; } if(alpha[cardIndex1/6][cardIndex1%6]==alpha[cardIndex2/6][cardIndex2%6]) { cout<<"Good Job!"<<endl; counter+=2; map[cardIndex1/6][cardIndex1%6]=alpha[cardIndex1/6][cardIndex1%6]; map[cardIndex2/6][cardIndex2%6]=alpha[cardIndex2/6][cardIndex2%6]; } else cout<<"Try Again!"<<endl; } cout<<"Congratulation!!"<<endl; }
沒有留言:
張貼留言