-
游戲簡述
系統(tǒng)隨機(jī)產(chǎn)生4個(gè)0~9不相同的數(shù)字剩岳,從小到大排序,玩家從終端輸入4個(gè)從小到大排好序的不相同數(shù)字仇矾,如果數(shù)字相同并且位置相同庸蔼,記為A;如果數(shù)字相同但是位置不同贮匕,記為B姐仅。用戶根據(jù)每次輸入數(shù)字的反饋,進(jìn)行邏輯推理刻盐,直到猜出答案掏膏。
- 產(chǎn)生4個(gè)不相同的隨機(jī)數(shù)
- 將4個(gè)數(shù)從小到大進(jìn)行排序(插入排序)
- 游戲開始,將輸入的數(shù)字與原始數(shù)字進(jìn)行比較隙疚,通過兩重循環(huán)實(shí)現(xiàn)壤追,在數(shù)字相同的情況下,如果i與j相等供屉,則A++行冰;否則B++
- 如果A等于4,則跳出循環(huán)伶丐,游戲結(jié)束悼做;否則繼續(xù)輸入,同時(shí)A哗魂,B的值還原
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdbool.h>
int main(int argc, const char * argv[]) {
//保存原始數(shù)據(jù)
int originalArray[4] = {};
//保存猜測數(shù)據(jù)
int guessArray[4] = {};
//計(jì)算數(shù)字正確且位置正確的個(gè)數(shù)
int countA = 0;
//計(jì)算數(shù)字正確但位置錯(cuò)誤的個(gè)數(shù)
int countB = 0;
srand((unsigned int)time(NULL));
for(int i = 0;i < 4;i++){
bool isExist = false;
int temp = 0;
while(1){
//產(chǎn)生一個(gè)隨機(jī)數(shù)
temp = rand() % 10;
//判斷是否已經(jīng)存在
for(int j = 0;j <i;j++){
if(originalArray[j] == temp){
//重復(fù)了,停止比較,繼續(xù)產(chǎn)生新的
isExist = true;
break;
}
}
//1.重復(fù)了葫男,break
//2.遍歷數(shù)組沒有重復(fù)的
if(isExist == false){
break;
}
}
//邊產(chǎn)生 邊排序 插入排序
//尋找這個(gè)數(shù)對(duì)應(yīng)的位置
int j = 0;
for(;j <i;j++){
//j對(duì)應(yīng)的數(shù)字和產(chǎn)生的數(shù)字進(jìn)行比較
if(temp < originalArray[j]){
//j后面的內(nèi)容往后移動(dòng) 騰出空間
for(int k = i;k > j;k--){
originalArray[k] = originalArray[k-1];
}
break;
}
}
//寫入到數(shù)組中
originalArray[j] = temp;
}
//開始游戲
while (1) {
//輸入猜測的數(shù)據(jù)
printf("請(qǐng)輸入猜測的數(shù)字:\n");
for (int i = 0; i < 4; i++) {
scanf("%d",&guessArray[i]);
}
//將產(chǎn)生的數(shù)與輸入的數(shù)進(jìn)行比較
for (int i = 0; i < 4; i++) { //控制原始數(shù)字
for (int j = 0; j < 4; j++) { //控制輸入
if (originalArray[i] == guessArray[j]) {
if (i == j) {
//數(shù)字相同且位置相同
countA++;
}else{
//數(shù)字相同但位置不同
countB++;
}
}
}
}
if (countA == 4) {
//猜對(duì)了抱冷!
printf("Congratulations!!!\n");
break;
}else{
printf("%dA%dB\n",countA,countB);
//清零
countA = 0;
countB = 0;
}
}
// //輸出產(chǎn)生的數(shù)
// for(int i =0;i <4;i++){
// printf("%d",originalArray[i]);
// }
// printf("\n");
return 0;
}
-
心得體會(huì)
通過這個(gè)小demo的練習(xí),學(xué)習(xí)到了如何去生成隨機(jī)數(shù)梢褐,盡管中間遇到了一些小障礙旺遮,但是解決問題的同時(shí)也學(xué)到了很多。當(dāng)然盈咳,最有意思的是耿眉,這個(gè)demo本身就是一款十分鍛煉邏輯思維能力的小游戲,你可以來試試鱼响,看看自己的邏輯思維能力如何