日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言 倒计时不清屏_打字游戏超细讲解(C语言基础小游戏)

發布時間:2025/3/21 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言 倒计时不清屏_打字游戏超细讲解(C语言基础小游戏) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先我們會發現我們網上看到的打字游戲都是上來就敲代碼,小白看的一臉懵,所以鑫哥在這給大家送上一份超級詳細的打字游戲編寫流程及對應的結果展示,希望可以幫到小白進行入門學習。

話不多說,我們先看一下什么叫做打字游戲:

運行效果

很簡單的一個C語言的小游戲,接下來鑫哥將帶領大家進行編寫運行。

一、開發環境:

本次使用的環境為:Ubuntu系統云+sublime進行開發的。

二、框架分析:

最外層時一個大循環:----------while

打印游戲規則

按下任意鍵打印生成的隨機字符串(20字母的字符串)

先生成一個隨機的字符串----按下任意鍵----打印出來

按下任意鍵----生成一個隨機的字符串----打印出來

按下任意鍵(需要做出一個沒有回顯的)----------獲取鍵盤輸入

生成一個隨機的字符串(生成 隨機數->字母->數組)(已知次數循環)--for-函數的調用

打印出來--------輸出

按照上面的字符串進行敲鍵盤

同時進行判斷,如果正確就原樣輸出,如果錯誤就_輸出-------if ---else

在第0次按下時開始計時、最后結束計時--------調用時間函數獲取當前系統時間

如果按下的按鍵和對應的數組中的字母相同---原樣輸出(同時k++)

如果不一樣-----打印_

最后完成了,打印用時、正確個數(正確個數由k表示)

用時 = 結束時間-開始時間 正確個數 = k

按下esc退出、按下空格鍵繼續

判斷按下的是什么

ESC退出: retrun 0;//結束當前函數并返回一個0

空格繼續:清屏繼續玩

三、開始編程:

1.能玩一次的打字游戲

1.1打印游戲規則:

#include <stdio.h> int main() {//1.打印游戲規則printf("按下任意鍵開始游戲,按下首字母開始計時,正確原樣輸出,錯誤_表示n");//2.按下任意鍵,生成一個隨機的字符串,打印輸出 }

運行效果

1.2.按下任意鍵

提供給大家一個源碼:mygetch 無回顯的getchar(不需要回車)

//------------------封裝好的mygetch------------------ #include <termios.h> #include <unistd.h> char mygetch(){struct termios oldt, newt;char ch;tcgetattr( STDIN_FILENO, &oldt );newt = oldt;newt.c_lflag &= ~( ICANON | ECHO );tcsetattr( STDIN_FILENO, TCSANOW, &newt );ch = getchar();tcsetattr( STDIN_FILENO, TCSANOW, &oldt );return ch;} //----------------------------------------------------- 復制粘貼在main函數上方進行使用

正常代碼:(按下任意鍵不需要知道按了什么,所以不需要用變量去接返回值)

#include <stdio.h> //------------------封裝好的mygetch------------------ #include <termios.h> #include <unistd.h> char mygetch(){struct termios oldt, newt;char ch;tcgetattr( STDIN_FILENO, &oldt );newt = oldt;newt.c_lflag &= ~( ICANON | ECHO );tcsetattr( STDIN_FILENO, TCSANOW, &newt );ch = getchar();tcsetattr( STDIN_FILENO, TCSANOW, &oldt );return ch;} //----------------------------------------------------- int main() {//1.打印游戲規則printf("按下任意鍵開始游戲,按下首字母開始計時,正確原樣輸出,錯誤_表示n");//2.按下任意鍵,生成一個隨機的字符串,打印輸出mygetch();//函數名+( );就表示函數的調用 按下任意鍵return 0; }

運行效果

將隨機數->字母

#include <stdio.h> #include <stdlib.h> #include <time.h> int main() {srand(time(NULL));//設置隨機數種子,使用的是時間(當前的系統時間)int a =rand();printf("%dn",a);char b = a%26+'a';//一個很大的數%26取余就變成了0-25//一個0-25的數+‘a’就變成了‘a’-‘z’隨機字母(ASCII碼)printf("%cn",b);return 0; }

運行效果

創建數組,將生成好的字母(字符)放入數組的對應位置中

#include <stdio.h> //------------------封裝好的mygetch------------------ #include <termios.h> #include <unistd.h> #include <stdlib.h> #include <time.h> char mygetch(){struct termios oldt, newt;char ch;tcgetattr( STDIN_FILENO, &oldt );newt = oldt;newt.c_lflag &= ~( ICANON | ECHO );tcsetattr( STDIN_FILENO, TCSANOW, &newt );ch = getchar();tcsetattr( STDIN_FILENO, TCSANOW, &oldt );return ch;} // //-----------------------------------------------------int main() {char haha[20] = "";//20 表示的是數組的長度srand(time(NULL));//設置隨機數種子,使用的是時間(當前的系統時間)//循環的生成、放入、生成、放入//因為一共20次,因此我們使用已知循環次數的循環forint i;mygetch();//按下任意鍵for (i = 0; i < 20; ++i)//要將int i= 0;的int去掉{// char b = rand()%26+'a';//生成一個隨機的字母// haha[i] = b;//給數組中的第i個賦值haha[i] = rand()%26+'a';}printf("%sn", haha);//打印生成好的隨機字符串// int a =rand();// printf("%dn",a);// char b = a%26+'a';// //一個很大的數%26取余就變成了0-25// //一個0-25的數+‘a’就變成了‘a’-‘z’隨機字母// printf("%cn",b);return 0; }

按照你上面有的字符進行敲擊鍵盤

#include <stdio.h> //------------------封裝好的mygetch------------------ #include <termios.h> #include <unistd.h> #include <stdlib.h> #include <time.h> char mygetch(){struct termios oldt, newt;char ch;tcgetattr( STDIN_FILENO, &oldt );newt = oldt;newt.c_lflag &= ~( ICANON | ECHO );tcsetattr( STDIN_FILENO, TCSANOW, &newt );ch = getchar();tcsetattr( STDIN_FILENO, TCSANOW, &oldt );return ch;} // //----------------------------------------------------- int main() {char haha[20] = "";//20 表示的是數組的長度srand(time(NULL));//設置隨機數種子,使用的是時間(當前的系統時間)int i;mygetch();//按下任意鍵for (i = 0; i < 20; ++i)//要將int i= 0;的int去掉{haha[i] = rand()%26+'a';}printf("%sn", haha);//打印生成好的隨機字符串int time_s = 0,time_e = 0,k = 0;for (i = 0; i < 20; ++i){char a = mygetch();//獲取鍵盤輸入的一個字符if (i == 0){time_s = time(NULL);//如果第0次按下就獲取下當前的時間}if (a == haha[i]){printf("%c", a);k++;}elseprintf("_");}time_e = time(NULL);printf("n");printf("用時:%ds,正確個數%d個n",time_e - time_s ,k);return 0; }

運行效果

3.如何做成可以玩多次的打字游戲:

按下空格就打印haha,按下esc就退出

#include <stdio.h> //------------------封裝好的mygetch------------------ #include <termios.h> #include <unistd.h> #include <stdlib.h> #include <time.h> char mygetch(){struct termios oldt, newt;char ch;tcgetattr( STDIN_FILENO, &oldt );newt = oldt;newt.c_lflag &= ~( ICANON | ECHO );tcsetattr( STDIN_FILENO, TCSANOW, &newt );ch = getchar();tcsetattr( STDIN_FILENO, TCSANOW, &oldt );return ch;} int main(int argc, char const *argv[]) {int r = 1;while(1)//死循環{printf("hahahahahan");r = 1;while(r){printf("esc退出,空格繼續,其他不好使n");char ch = mygetch();if (ch == 27){return 0;}else if (ch ==32){r = 0;}elser = 1;}}return 0; }

將上面進行合并最后就是整個小項目:

#include <stdio.h> //------------------封裝好的mygetch------------------ #include <termios.h> #include <unistd.h> #include <stdlib.h> #include <time.h> char mygetch(){struct termios oldt, newt;char ch;tcgetattr( STDIN_FILENO, &oldt );newt = oldt;newt.c_lflag &= ~( ICANON | ECHO );tcsetattr( STDIN_FILENO, TCSANOW, &newt );ch = getchar();tcsetattr( STDIN_FILENO, TCSANOW, &oldt );return ch;}int main(int argc, char const *argv[]) {int r = 1;while(1)//死循環{system("clear");//清空屏幕printf("按下任意鍵開始游戲,按下首字母開始計時,正確原樣輸出,錯誤_表示n");char haha[21] = "";//20 表示的是數組的長度srand(time(NULL));//設置隨機數種子,使用的是時間(當前的系統時間)int i;mygetch();//按下任意鍵for (i = 0; i < 20; ++i)//要將int i= 0;的int去掉{haha[i] = rand()%26+'a';}printf("%sn", haha);//打印生成好的隨機字符串int time_s = 0,time_e = 0,k = 0;for (i = 0; i < 20; ++i){char a = mygetch();//獲取鍵盤輸入的一個字符if (i == 0){time_s = time(NULL);//如果第0次按下就獲取下當前的時間}if (a == haha[i]){printf("%c", a);k++;}elseprintf("_");}time_e = time(NULL);printf("n");printf("用時:%ds,正確個數%d個n",time_e - time_s ,k);r = 1;while(r){printf("esc退出,空格繼續,其他不好使n");char ch = mygetch();if (ch == 27){return 0;}else if (ch ==32){r = 0;}elser = 1;}}return 0; }

打字游戲最終的運行效果

感謝各位小伙伴的支持歡迎點贊關注,謝謝,配合B站使用更佳

鑫哥B站:

千鋒項目體驗課-自制ipod-2打字游戲框架_嗶哩嗶哩 (゜-゜)つロ 干杯~-bilibili?www.bilibili.com 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的c语言 倒计时不清屏_打字游戏超细讲解(C语言基础小游戏)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。