【C語(yǔ)言】猜數(shù)字小游戲詳細(xì)教程
游戲效果
先帶大家看下游戲效果,
1.首頁(yè)面

2.模式選擇頁(yè)面

3.游戲頁(yè)面

4.成功頁(yè)面

項(xiàng)目源碼分享
注:VS2019編譯器不能用scanf,若想用要在第一行加上下面的代碼
#define?_CRT_SECURE_NO_WARNINGS
#include
#include
#include
#include
void?gotoxy(short?x,?short?y);?//將光標(biāo)移動(dòng)到指定位置
void?date();??//時(shí)間函數(shù)
void?Menu();??//游戲首頁(yè)面
void?menu1();??//游戲模式選擇頁(yè)面
void?menu2();??//魔鬼模式頁(yè)面
void?menu3();??//變態(tài)模式頁(yè)面
void?quit();??//游戲結(jié)束頁(yè)面
void?fault();??//錯(cuò)選提示
void?win();???//獲勝頁(yè)面
void?fail();??//失敗頁(yè)面
void?game1();??//簡(jiǎn)單模式
void?game2();??//正常模式
void?game3();??//魔鬼模式
void?game4();??//變態(tài)模式
void?pattern();??//模式選擇程序
int?main()
{
?
?system("COLOR?0A");
?int?input?=?0;
?srand((unsigned?int)time(0));
?do
?{
??system("cls");??//清屏
??date();????//打印時(shí)間。
??Menu();????//打印菜單
??gotoxy(54,?25);??//將光標(biāo)定位
??printf("請(qǐng)選擇->");
??while?(scanf("%d",?&input)?!=?EOF)
??{
???getchar();
???if?(input?==?1?||?input?==?2)
????break;
???fault();
???Sleep(1500);
??
???system("cls");??//清屏
???date();????//打印時(shí)間。
???Menu();????//打印菜單
???gotoxy(54,?25);??//將光標(biāo)定位
???printf("請(qǐng)選擇->");
??
??}
??
??switch?(input)
??{
??case?1:
???pattern();
???break;
??//case?2:
??//?system("cls");??//清屏
??//?date();
??//?rule();
??//?break;
??case?2:
???system("cls");??//清屏
???quit();
???Sleep(3000);
???exit(0);
???break;
??//default:
??//?//system("cls");??//清屏
??//?fault();
??//?Sleep(1500);
??//?break;
??}
??
?}?while?(1);
?return?0;
}
void?gotoxy(short?x,?short?y)
{
?COORD?coord?=?{?x,?y?};
?SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),?coord);
}
void?date()?//顯示當(dāng)前日期
{
?printf("\n當(dāng)前日期:");
?system("date/t");
?printf("當(dāng)前時(shí)間:");
?system("time/t");
}
void?Menu()?{
?printf("\n########################################################################################################################\n");
?printf("\n▓??????????????????????????????????????????????*??歡迎進(jìn)入猜數(shù)字小游戲??*????????????????????????????????????????????▓\n");
?printf("\n########################################################################################################################\n");
?printf("\n?????????????????????????????◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n");
?printf("????????????????????????????|◆|******|◆|?????????????????????????????????????|◆|******|◆|\n");
?printf("????????????????????????????|◆|******|◆|???????☆?開(kāi)始游戲????請(qǐng)按?1?????????|◆|******|◆|\n");
?printf("????????????????????????????|◆|******|◆|???????☆?退出游戲????請(qǐng)按?2?????????|◆|******|◆|\n");
?printf("????????????????????????????|◆|******|◆|?????????????????????????????????????|◆|******|◆|\n");
?printf("?????????????????????????????◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n");
?printf("\n########################################################################################################################\n");
?printf("\n▓???????????????????????????????????????????????*************************?????????????????????????????????????????????▓\n");
?printf("\n########################################################################################################################\n");
}
void?menu1()?{
?printf("\n########################################################################################################################\n");
?printf("\n▓?????????????????????????????????????????????????????*?歡迎使用?*????????????????????????????????????????????????????▓\n");
?printf("\n########################################################################################################################\n");
?printf("\n??????????????????????????????◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n");
?printf("????????????????????????????|◆|******|◆|?????????????????????????????????????|◆|******|◆|\n");
?printf("????????????????????????????|◆|******|◆|???????☆?簡(jiǎn)單模式????請(qǐng)按?1?????????|◆|******|◆|\n");
?printf("????????????????????????????|◆|******|◆|???????☆?正常模式????請(qǐng)按?2?????????|◆|******|◆|\n");
?printf("????????????????????????????|◆|******|◆|???????☆?魔鬼模式????請(qǐng)按?3?????????|◆|******|◆|\n");
?printf("????????????????????????????|◆|******|◆|???????☆?變態(tài)模式????請(qǐng)按?4?????????|◆|******|◆|\n");
?printf("????????????????????????????|◆|******|◆|?????????????????????????????????????|◆|******|◆|\n");
?printf("??????????????????????????????◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n");
?printf("\n########################################################################################################################\n");
?printf("\n▓???????????????????????????????????????????????*************************?????????????????????????????????????????????▓\n");
?printf("\n########################################################################################################################\n");
}
//*******************************************************************************************************************
//game3頁(yè)面
void?menu2()
{
?system("cls");??//清屏
?date();????//打印時(shí)間。
?printf("\n########################################################################################################################\n");
?printf("\n▓?????????????????????????????????????????????????*?歡迎進(jìn)入魔鬼模式?*????????????????????????????????????????????????▓\n");
?printf("\n########################################################################################################################\n");
?printf("\n▓????????????????????????????☆規(guī)則:系統(tǒng)隨機(jī)生成一組0到9不重復(fù)的數(shù),具體生成幾個(gè)由玩家設(shè)定???????????????????????????▓\n");
?printf("\n▓????????????????????????????☆規(guī)則:玩家需要輸入和系統(tǒng)順序一致且數(shù)字相同的數(shù),即可獲勝。?????????????????????????????▓\n");
?printf("\n########################################################################################################################\n");
?printf("\n▓????????????????????????????☆提示:A表示數(shù)字和位置都正確,B代表只有數(shù)字正確,順序不對(duì)。?????????????????????????????▓\n");
?printf("\n▓????????????????????????????☆提示:???字母前面的數(shù)字表示個(gè)數(shù)????????????????????????????????????????????????????????▓\n");
?printf("\n########################################################################################################################\n");
}
//*******************************************************************************************************************
//game4頁(yè)面
void?menu3()
{
?system("cls");??//清屏
?date();????//打印時(shí)間。
?printf("\n########################################################################################################################\n");
?printf("\n▓?????????????????????????????????????????????????*?歡迎進(jìn)入魔鬼模式?*????????????????????????????????????????????????▓\n");
?printf("\n########################################################################################################################\n");
?printf("\n▓????????????????????????????☆規(guī)則:系統(tǒng)隨機(jī)生成一組0到19不重復(fù)的數(shù),具體生成幾個(gè)由玩家設(shè)定??????????????????????????▓\n");
?printf("\n▓????????????????????????????☆規(guī)則:玩家需要輸入和系統(tǒng)順序一致且數(shù)字相同的數(shù),即可獲勝。?????????????????????????????▓\n");
?printf("\n########################################################################################################################\n");
?printf("\n▓????????????????????????????☆提示:A表示數(shù)字和位置都正確,B代表只有數(shù)字正確,順序不對(duì)。?????????????????????????????▓\n");
?printf("\n▓????????????????????????????☆提示:???字母前面的數(shù)字表示個(gè)數(shù)????????????????????????????????????????????????????????▓\n");
?printf("\n########################################################################################################################\n");
}
//*******************************************************************************************************************
//結(jié)束頁(yè)面
void?quit()
{
?printf("\n\n");
?printf("########################################################################################################################\n");
?printf("###??????????????????????????????????????????????????????????????????????????????????????????????????????????????????###\n");
?printf("###???\t\t\t||================================================================||\t\t\t?????###\n");
?printf("###???\t\t\t||?????????????????????????*猜數(shù)字小游戲*?????????????????????????||\t\t\t?????###\n");
?printf("###???\t\t\t||================================================================||\t\t\t?????###\n");
?printf("###???\t\t\t||??????????????????????☆☆☆☆☆☆☆☆☆☆??????????????????????||\t\t\t?????###\n");
?printf("###???\t\t\t||??????????????????????☆????????????????☆??????????????????????||\t\t\t?????###\n");
?printf("###???\t\t\t||????????????????☆☆????歡迎玩家下次挑戰(zhàn)????☆☆????????????????||\t\t\t?????###\n");
?printf("###???\t\t\t||??????????????????????☆????????????????☆??????????????????????||\t\t\t?????###\n");
?printf("###???\t\t\t||??????????????????????☆☆☆☆☆☆☆☆☆☆??????????????????????||\t\t\t?????###\n");
?printf("###???\t\t\t||????????????????????????????????????????????????????????????????||\t\t\t?????###\n");
?printf("###???\t\t\t||================================================================||\t\t\t?????###\n");
?printf("###???\t\t\t||================================================================||\t\t\t?????###\n");
?printf("###??????????????????????????????????????????????????????????????????????????????????????????????????????????????????###\n");
?printf("########################################################################################################################\n");
}
//*******************************************************************************************************************
//錯(cuò)選提示
void?fault()
{
?printf("\n\n?????????????????????????????????????***********************************************??????????????????????????????????????\n");
?printf("?????????????????????????????????????▓????$#$??????選擇錯(cuò)誤,重新選擇??????$#$?????▓\n");
?printf("\n?????????????????????????????????????***********************************************??????????????????????????????????????\n");
}
//*******************************************************************************************************************
//成功頁(yè)面
void?win()
{
?printf("\n\n\n\n\n\n");
?printf("????\t\t\t$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");
?printf("????\t\t\t|#|??????????????????????????????????????????????????????????|#|\n");
?printf("????\t\t\t|#|????????????????????☆☆☆☆☆☆☆☆☆☆??????????????????|#|\n");
?printf("????\t\t\t|#|????????????????????☆????????????????☆??????????????????|#|\n");
?printf("????\t\t\t|#|?????????????☆☆?????恭喜你,挑戰(zhàn)成功!???☆☆???????????|#|\n");
?printf("????\t\t\t|#|????????????????????☆????????????????☆??????????????????|#|\n");
?printf("????\t\t\t|#|????????????????????☆☆☆☆☆☆☆☆☆☆??????????????????|#|\n");
?printf("\t\t\t|#|??????????????????????????????????????????????????????????|#|\n");
?printf("\t\t\t$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");
?system("COLOR?0A");
}
//*******************************************************************************************************************
//失敗頁(yè)面
void?fail()
{
?printf("\n\n\n\n\n\n");
?printf("????\t\t\t$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");
?printf("????\t\t\t|#|??????????????????????????????????????????????????????????|#|\n");
?printf("????\t\t\t|#|????????????????????☆☆☆☆☆☆☆☆☆☆??????????????????|#|\n");
?printf("????\t\t\t|#|????????????????????☆????????????????☆??????????????????|#|\n");
?printf("????\t\t\t|#|?????????????☆☆?????????挑戰(zhàn)失敗!???????☆☆???????????|#|\n");
?printf("????\t\t\t|#|????????????????????☆????????????????☆??????????????????|#|\n");
?printf("????\t\t\t|#|????????????????????☆☆☆☆☆☆☆☆☆☆??????????????????|#|\n");
?printf("\t\t\t|#|??????????????????????????????????????????????????????????|#|\n");
?printf("\t\t\t$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");
}
//*******************************************************************************************************************
//簡(jiǎn)單模式
void?game1()
{
?system("cls");??//清屏
?date();????//打印時(shí)間。
?printf("\n########################################################################################################################\n");
?printf("\n▓?????????????????????????????????????????????????*?歡迎進(jìn)入簡(jiǎn)單模式?*????????????????????????????????????????????????▓\n");
?printf("\n▓????????????????????????????????????????*?在1-100之間系統(tǒng)會(huì)隨機(jī)生成一個(gè)數(shù)字?*????????????????????????????????????????▓\n");
?printf("\n▓????????????????????????????????????????*???????????請(qǐng)用戶猜該數(shù)字??????????*????????????????????????????????????????▓\n");
?printf("\n########################################################################################################################\n");
?int?n?=?rand()?%?100?+?1;
?int?guess?=?0;
?while?(1)
?{
??printf("\n▓#$請(qǐng)猜數(shù)字:>");
??scanf("%d",?&guess);
??if?(guess???{
???printf("\n????????????????????????????????????????****************************************????????????????????????????????????????\n");
???printf("\n????????????????????????????????????????▓????????#$????猜小了????$#??????????▓\n");
???printf("\n????????????????????????????????????????****************************************????????????????????????????????????????\n");
??}
??else?if?(guess?>?n)
??{
???printf("\n????????????????????????????????????????****************************************????????????????????????????????????????\n");
???printf("\n????????????????????????????????????????▓????????#$????猜大了????$#??????????▓\n");
???printf("\n????????????????????????????????????????****************************************????????????????????????????????????????\n");
??}
??else
??{
???system("COLOR?04");
???system("cls");??//清屏
???date();????//打印時(shí)間。
???win();
???break;
??}
?}
}
//*******************************************************************************************************************
//正常模式
void?game2()
{
LOOP:date();????//打印時(shí)間。
?system("COLOR?A0");
?system("cls");??//清屏
?date();????//打印時(shí)間。
?printf("\n########################################################################################################################\n");
?printf("\n▓?????????????????????????????????????????????????*?歡迎進(jìn)入正常模式?*????????????????????????????????????????????????▓\n");
?printf("\n########################################################################################################################\n");
?printf("\n▓???????????????????????????????????????????????*?提醒:這是個(gè)鏡像世界?*??????????????????????????????????????????????▓\n");
?printf("\n########################################################################################################################\n");
?int?n?=?rand()?%?100?+?1;
?int?guess?=?0;
?int?i?=?0,?k?=?1,?s;
?printf("\n▓#$請(qǐng)輸入挑戰(zhàn)次數(shù):>");
?scanf("%d",?&s);
??
?for?(i?=?0;?i??{
??printf("\n▓#$請(qǐng)猜數(shù)字:>");
??scanf("%d",?&guess);
??if?(guess???{
???printf("\n????????????????????????????????????????****************************************????????????????????????????????????????\n");
???printf("\n????????????????????????????????????????▓????????#$????猜大了????$#??????????▓\n");
???printf("\n????????????????????????????????????????****************************************????????????????????????????????????????\n");
??}
??else?if?(guess?>?n)
??{
???printf("\n????????????????????????????????????????****************************************????????????????????????????????????????\n");
???printf("\n????????????????????????????????????????▓????????#$????猜小了????$#??????????▓\n");
???printf("\n????????????????????????????????????????****************************************????????????????????????????????????????\n");
??}
??else
??{
???system("COLOR?04");
???system("cls");??//清屏
???date();????//打印時(shí)間。
???win();
???k?=?0;
???break;
??}
?}
?if?(k)
?{
??system("cls");??//清屏
??date();????//打印時(shí)間。
??win();
??Sleep(3000);
??printf("\n??????????????????????????????????????************************************??????????????????????????????????????\n");
??printf("\n ?????????????????????????????????????▓????$#$??嘻嘻,逗你呢!??$#$????▓\n");
??printf("\n??????????????????????????????????????************************************???????????????????????????????????????\n");
??Sleep(3000);
??goto?LOOP;
?}
}
//*******************************************************************************************************************
//魔鬼模式
void?game3()
{
?int?acount,?bcount,?n?=?0,?i,?j,?k?=?0,?flag,?a[10],?b[10];
?do
?{
??menu2();
??printf("\n▓?#$請(qǐng)輸入要猜幾個(gè)數(shù)字(1);
??while?(n?<=?1?||?n?>?10)
???scanf("%d",?&n);
??flag?=?0;
??for?(i?=?0;?i???{
???a[i]?=?rand()?%?10;???//每次產(chǎn)生0-9范圍內(nèi)任意的一個(gè)隨機(jī)數(shù)字并存到數(shù)組a中
??}
??for?(i?=?0;?i?1 ;?i++)
??{
???for?(j?=?i?+?1;?j????{
????if?(a[i]?==?a[j])?//判斷數(shù)組a中是否有相同數(shù)字
????{
?????flag?=?1;??//若有上述情況則標(biāo)志位置1
?????break;
????}
???}
??}
??//for?(i?=?0;?i?
??//?printf("%d?",?a[i]);
??//printf("\n");
??
?}?while?(flag?==?1);??//若標(biāo)志位為1則重新分配數(shù)據(jù)
??
?do
?{
??k++;??//記錄猜數(shù)字的次數(shù)
??acount?=?0;???//每次猜的過(guò)程中位置和數(shù)字都正確的個(gè)數(shù)
??bcount?=?0;???//每次猜的過(guò)程中位置不正確但數(shù)字正確的個(gè)數(shù)、
??printf("\n▓#$請(qǐng)猜%d個(gè)數(shù),用空格分開(kāi):>",?n);
??for?(i?=?0;?i???{
???scanf("%d",?&b[i]);??//輸入猜測(cè)的數(shù)據(jù)到數(shù)組b中
???getchar();
??
??}
??for?(i?=?0;?i????for?(j?=?0;?j????{
????if?(a[i]?==?b[i])?//檢測(cè)輸入的數(shù)據(jù)與計(jì)算機(jī)分配的數(shù)據(jù)相同且位置相同的個(gè)數(shù)
????{
?????acount++;
?????break;
????}
????if?(a[i]?==?b[j]?&&?i?!=?j)?//檢測(cè)輸入的數(shù)據(jù)與計(jì)算機(jī)分配的數(shù)據(jù)相同但位置不同的個(gè)數(shù)
????{
?????bcount++;
?????break;
????}
???}
??printf("▓#$提示:%dA , %dB\n\n",?acount,?bcount);
??if?(acount?==?n)
??{
???system("COLOR?04");
???system("cls");??//清屏
???date();????//打印時(shí)間。
???win();
???break;
??}
?}?while?(1);
}
//*******************************************************************************************************************
//變態(tài)模式
void?game4()
{
?int?acount,?bcount,?i,?j,?k?=?0,?flag,?a[20],?b[20],?n?=?0;
?do
?{
??menu3();
??printf("\n▓?#$請(qǐng)輸入要猜幾個(gè)數(shù)字(5);
??while?(n?<=?5?||?n?>=?20)
???scanf("%d",?&n);
??flag?=?0;
??for?(i?=?0;?i???{
???a[i]?=?rand()?%?20;???//每次產(chǎn)生0-19范圍內(nèi)任意的一個(gè)隨機(jī)數(shù)字并存到數(shù)組a中
??}
??for?(i?=?0;?i?1 ;?i++)
??{
???for?(j?=?i?+?1;?j????{
????if?(a[i]?==?a[j])?//判斷數(shù)組a中是否有相同數(shù)字
????{
?????flag?=?1;??//若有上述情況則標(biāo)志位置1
?????break;
????}
???}
??}
??//for?(i?=?0;?i?
??//?printf("%d?",?a[i]);
??//printf("\n");
?}?while?(flag?==?1);??//若標(biāo)志位為1則重新分配數(shù)據(jù)
??
?do
?{
??k++;??//記錄猜數(shù)字的次數(shù)
??acount?=?0;???//每次猜的過(guò)程中位置和數(shù)字都正確的個(gè)數(shù)
??bcount?=?0;???//每次猜的過(guò)程中位置不正確但數(shù)字正確的個(gè)數(shù)、
??printf("\n▓#$請(qǐng)猜%d個(gè)數(shù),用空格分開(kāi):>",?n);
??for?(i?=?0;?i???{
???scanf("%d",?&b[i]);??//輸入猜測(cè)的數(shù)據(jù)到數(shù)組b中
???getchar();
??
??}
??for?(i?=?0;?i????for?(j?=?0;?j????{
????if?(a[i]?==?b[i])?//檢測(cè)輸入的數(shù)據(jù)與計(jì)算機(jī)分配的數(shù)據(jù)相同且位置相同的個(gè)數(shù)
????{
?????acount++;
?????break;
????}
????if?(a[i]?==?b[j]?&&?i?!=?j)?//檢測(cè)輸入的數(shù)據(jù)與計(jì)算機(jī)分配的數(shù)據(jù)相同但位置不同的個(gè)數(shù)
????{
?????bcount++;
?????break;
????}
???}
??printf("▓#$提示:%dA , %dB\n\n",?acount,?bcount);
??if?(acount?==?n)
??{
???system("COLOR?04");
???system("cls");??//清屏
???date();????//打印時(shí)間。
???win();
???break;
??}
?}?while?(1);
}
//*******************************************************************************************************************
//模式選擇頁(yè)面
void?pattern()
{
?int?input1?=?0,?n?=?0;
?char?s?=?0;
?do
?{
??system("cls");??//清屏
??date();
??menu1();
??gotoxy(54,?25);
??printf("請(qǐng)選擇->");
??while?(scanf("%d",?&input1)?!=?EOF)
??{
???getchar();
???if?(input1?>=?1?&&?input1?<=?4)
????break;
???fault();
???Sleep(1500);
???system("cls");??//清屏
???date();
???menu1();
???gotoxy(54,?25);
???printf("請(qǐng)選擇->");
??}
??switch?(input1)
??{
??case?1:
???game1();
???goto?LINK;
??
??case?2:
???game2();
???goto?LINK;
??case?3:
???game3();
???goto?LINK;
??case?4:
???game4();
???goto?LINK;
??
??}
??
?}?while?(1);
LINK:printf("\n\n?????????????????????????????????????***********************************************??????????????????????????????????????\n");
?printf("?????????????????????????????????????▓????$#$??按ENTER鍵進(jìn)入、返回主菜單??$#$?????▓\n");
?printf("\n?????????????????????????????????????***********************************************??????????????????????????????????????\n");
?getchar();
?while?((s?=?getchar())?!=?'\n')
?{
??;
?}
}
分步講解以下為代碼塊,在編譯器上不能執(zhí)行,只用于理解
一、主函數(shù)
int?main()
{
?
?system("COLOR?0A");????????//改變字體背景顏色
?int?input?=?0;
?srand((unsigned?int)time(NULL));????//設(shè)置隨機(jī)種子
?do
?{
??system("cls");??//清屏
??date();????//打印時(shí)間。
??Menu();????//打印菜單
??gotoxy(54,?25);??//將光標(biāo)定位
??printf("請(qǐng)選擇->");
??while?(scanf("%d",?&input)?!=?EOF)????//處理當(dāng)用戶輸入信息為字母或其他數(shù)字的bug
??{
???getchar();
???if?(input?==?1?||?input?==?2)
????break;
???fault();
???Sleep(1500);????????????//程序停止運(yùn)行,vs2019的單位是毫秒。
??
???system("cls");??//清屏
???date();????//打印時(shí)間。
???Menu();????//打印菜單
???gotoxy(54,?25);??//將光標(biāo)定位
???printf("請(qǐng)選擇->");
??
??}
??
??switch?(input)????
??{
??case?1:
???pattern();????????????//進(jìn)入模式選擇頁(yè)面
???break;
??
??case?2:
???system("cls");??//清屏
???quit();????????????//進(jìn)入游戲結(jié)束頁(yè)面
???Sleep(3000);
???exit(0);????????????//程序結(jié)束。
???break;
??
??}
??
?}?while?(1);????????//能多次玩游戲
?return?0;
}
1)system("COLOR 0A");system頭文件
其中COLOR后面的0是背景色代號(hào),A是前景色代號(hào)
顏色代號(hào)
0 黑色 1 藍(lán)色 2 綠色 3 湖藍(lán)色 4 紅色 5 紫色 6 黃色 7 白色 8 灰色 9 淡藍(lán)色 A 淡綠色 B 淡淺綠色 C 淡紅色 D 淡紫色 ?E 淡黃色 F 亮白色
2)srand((unsigned int)time(NULL));srand()函數(shù)用來(lái)設(shè)置算法的種子,time(NULL)返回當(dāng)前的時(shí)間,先調(diào)用srand(time(NULL))是把當(dāng)前的時(shí)間作為種子,使程序每次運(yùn)行產(chǎn)生不同的隨機(jī)數(shù)序列。
3)system("cls"); ? ? ? ?//清屏
gotoxy(54, 25) ? ? ? ? ? ? ? ?//光標(biāo)定位1、在 Turbo C 或 Borland C 中可以使用 gotoxy 函數(shù),包含在頭文件 conio.h中。
2、而在 Visual C++ 或 GCC 中使用 gotoxy 函數(shù),就需要把上面自定義的 gotoxy 函數(shù)寫(xiě)在自己的程序中。
下面這個(gè) C 程序?qū)⒃谄聊恢械?行10列(橫向?yàn)閄,縱向?yàn)閅軸)中央輸出“你好 陌生人”
#include?
#include?
void?gotoxy(short?x,?short?y)
{
????COORD?coord?=?{x,?y};
????SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),?coord);
}
int?main(void)?{
????gotoxy(10,?5);
????printf("你好?陌生人\n");
????return?0;
}
來(lái)源于百度gotoxyhttps://baike.baidu.com/item/gotoxy/2986529?fr=aladdin
5)Sleep()Sleep函數(shù)可以使計(jì)算機(jī)程序(進(jìn)程,任務(wù)或線程)進(jìn)入休眠,使其在一段時(shí)間內(nèi)處于非活動(dòng)狀態(tài)。
windows下的Sleep函數(shù),首字母大寫(xiě) ?#include
linux下的sleep函數(shù),首字母小寫(xiě) ? #include
sleep函數(shù)https://baike.baidu.com/item/Sleep%E5%87%BD%E6%95%B0
6)exit(0);exit(0)的意思指的是正常狀態(tài)退出。
exit()就是退出,傳入的參數(shù)是程序退出時(shí)的狀態(tài)碼,0表示正常退出,其他表示非正常退出。退出程序,括號(hào)中的0表示程序的退出返回代碼,無(wú)實(shí)際意義。exit()就是退出 , 0就是返回的參數(shù), ?也可以返回 1 ?-1 等 ?你可以用來(lái)判斷函數(shù)是否正確返回
二、pattern子函數(shù)
void?pattern()
{
?int?input1?=?0,?n?=?0;
?char?s?=?0;
?do
?{
??system("cls");??//清屏
??date();????????????//顯示日期
??menu1();???????????
??gotoxy(54,?25);
??printf("請(qǐng)選擇->");
??while?(scanf("%d",?&input1)?!=?EOF)
??{
???getchar();
???if?(input1?>=?1?&&?input1?<=?4)
????break;
???fault();
???Sleep(1500);
???system("cls");??//清屏
???date();
???menu1();
???gotoxy(54,?25);
???printf("請(qǐng)選擇->");
??}
??switch?(input1)
??{
??case?1:
???game1();
???goto?LINK;
??
??case?2:
???game2();
???goto?LINK;
??case?3:
???game3();
???goto?LINK;
??case?4:
???game4();
???goto?LINK;
??
??}
??
?}?while?(1);
LINK:printf("\n\n?????????????????????????????????????***********************************************??????????????????????????????????????\n");
?printf("?????????????????????????????????????▓????$#$??按ENTER鍵進(jìn)入、返回主菜單??$#$?????▓\n");
?printf("\n?????????????????????????????????????***********************************************??????????????????????????????????????\n");
?getchar();
?while?((s?=?getchar())?!=?'\n')
?{
??;
?}
}
1)goto語(yǔ)句goto (無(wú)條件轉(zhuǎn)換語(yǔ)句)函數(shù)可以出現(xiàn)在程序的任意一條語(yǔ)句之前,
一般形式:
goto ?標(biāo)號(hào) ;
標(biāo)號(hào) : 語(yǔ)句;程序可直接由goto跳的標(biāo)號(hào)的那一個(gè)語(yǔ)句。
三、簡(jiǎn)單模式
void?game1()
{
?system("cls");??//清屏
?date();????//打印時(shí)間。
?printf("\n########################################################################################################################\n");
?printf("\n▓?????????????????????????????????????????????????*?歡迎進(jìn)入簡(jiǎn)單模式?*????????????????????????????????????????????????▓\n");
?printf("\n▓????????????????????????????????????????*?在1-100之間系統(tǒng)會(huì)隨機(jī)生成一個(gè)數(shù)字?*????????????????????????????????????????▓\n");
??
?printf("\n▓????????????????????????????????????????*???????????請(qǐng)用戶猜該數(shù)字??????????*????????????????????????????????????????▓\n");
?printf("\n########################################################################################################################\n");
??
?int?n?=?rand()?%?100?+?1;????????//去1——100之間的隨機(jī)變量賦值給n
?int?guess?=?0;
?while?(1)
?{
??printf("\n▓#$請(qǐng)猜數(shù)字:>");
??scanf("%d",?&guess);
??if?(guess?//猜的數(shù)比系統(tǒng)產(chǎn)生的數(shù)小。
??{
???printf("\n????????????????????????????????????????****************************************????????????????????????????????????????\n");
???printf("\n????????????????????????????????????????▓????????#$????猜小了????$#??????????▓\n");
???printf("\n????????????????????????????????????????****************************************????????????????????????????????????????\n");
??}
??else?if?(guess?>?n)????//猜的數(shù)比系統(tǒng)產(chǎn)生的數(shù)大。
??{
???printf("\n????????????????????????????????????????****************************************????????????????????????????????????????\n");
???printf("\n????????????????????????????????????????▓????????#$????猜大了????$#??????????▓\n");
???printf("\n????????????????????????????????????????****************************************????????????????????????????????????????\n");
??}
??else????????//猜對(duì)了,
??{
???system("COLOR?04");????//換顏色
???system("cls");??//清屏
???date();????//打印時(shí)間。
???win();
???break;
??}
?}
}
「游戲設(shè)置思路」先由系統(tǒng)產(chǎn)生一個(gè)隨機(jī)數(shù)。用個(gè)變量先存起來(lái)。再設(shè)個(gè)變量來(lái)存玩家猜的數(shù),然后讓再讓這兩數(shù)比較不同給出提示,相同則游戲通過(guò)。
注意:猜錯(cuò)了的提示不要弄反,猜錯(cuò)了之后不要結(jié)束程序要有循環(huán)讓玩家繼續(xù)猜。
四、魔鬼模式
void?game3()
{
?int?acount,?bcount,?n?=?0,?i,?j,?k?=?0,?flag,?a[10],?b[10];
?do
?{
??menu2();????//打印魔鬼模式的界面
??printf("\n▓?#$請(qǐng)輸入要猜幾個(gè)數(shù)字(1);
??while?(n?<=?1?||?n?>?10)
???scanf("%d",?&n);
??flag?=?0;
??for?(i?=?0;?i?//把隨機(jī)生成的數(shù)存到數(shù)組a中
??{
???a[i]?=?rand()?%?10;???//每次產(chǎn)生0-9范圍內(nèi)任意的一個(gè)隨機(jī)數(shù)字并存到數(shù)組a中
??}
??for?(i?=?0;?i?1;?i++)????????//若有一樣的數(shù),重新分配數(shù)字。
??{
???for?(j?=?i?+?1;?j????{
????if?(a[i]?==?a[j])?//判斷數(shù)組a中是否有相同數(shù)字
????{
?????flag?=?1;??//若有上述情況則標(biāo)志位置1
?????break;
????}
???}
??}
??//for?(i?=?0;?i?
??//?printf("%d?",?a[i]);
??//printf("\n");
??
?}?while?(flag?==?1);??//若標(biāo)志位為1則重新分配數(shù)據(jù)
??
?do
?{
??k++;??//記錄猜數(shù)字的次數(shù)
??acount?=?0;???//每次猜的過(guò)程中位置和數(shù)字都正確的個(gè)數(shù)
??bcount?=?0;???//每次猜的過(guò)程中位置不正確但數(shù)字正確的個(gè)數(shù)、
??printf("\n▓#$請(qǐng)猜%d個(gè)數(shù),用空格分開(kāi):>",?n);
??for?(i?=?0;?i???{
???scanf("%d",?&b[i]);??//輸入猜測(cè)的數(shù)據(jù)到數(shù)組b中
???getchar();
??}
??for?(i?=?0;?i????for?(j?=?0;?j????{
????if?(a[i]?==?b[i])?//檢測(cè)輸入的數(shù)據(jù)與計(jì)算機(jī)分配的數(shù)據(jù)相同且位置相同的個(gè)數(shù)
????{
?????acount++;
?????break;
????}
????if?(a[i]?==?b[j]?&&?i?!=?j)?//檢測(cè)輸入的數(shù)據(jù)與計(jì)算機(jī)分配的數(shù)據(jù)相同但位置不同的個(gè)數(shù)
????{
?????bcount++;
?????break;
????}
???}
??printf("▓#$提示:%dA , %dB\n\n",?acount,?bcount);
??if?(acount?==?n)????????//玩家猜的數(shù)組與系統(tǒng)產(chǎn)生的一樣,游戲通過(guò)
??{
???system("COLOR?04");
???system("cls");??//清屏
???date();????//打印時(shí)間。
???win();
???break;
??}
?}?while?(1);
}
「1)游戲設(shè)置思路」先讓玩家輸入一個(gè)數(shù)字作為產(chǎn)生數(shù)組a的個(gè)數(shù),例如:輸入5,就產(chǎn)生5的隨機(jī)數(shù)并存到數(shù)組a中。
玩家在輸入一組數(shù)存到數(shù)組b中,讓數(shù)組b與a比較完全相同則游戲通過(guò)
提示A:順序與數(shù)字相同 ? ? ? ?B順序不對(duì),但系統(tǒng)生成的隨機(jī)數(shù)里有這個(gè)數(shù)字。
來(lái)源:https://blog.csdn.net/weixin_62263267/article/details/122389955
僅供大家學(xué)習(xí)參考與知識(shí)傳播,版權(quán)歸原作者所有,如有侵權(quán),麻煩聯(lián)系進(jìn)行刪除,感謝~
???????????????? ?END ?????????????????
