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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

详细讲解C语言单机小游戏——打字母游戏

發布時間:2024/3/26 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 详细讲解C语言单机小游戏——打字母游戏 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
要用C語言編寫一個單機小游戲,首先得安裝一個圖形庫。在這里我用的是EasyX 圖形庫,EasyX 是針對 C++ 的圖形庫,可以幫助 C++語言初學者快速上手圖形和游戲編程。 比如,可以用 VC + EasyX 很快的用幾何圖形畫一個房子,或者一輛移動的小車,可以編寫俄羅斯方塊、貪吃蛇、黑白棋等小游戲,可以練習圖形學的各種算法,等等。 后續我也會間斷性編寫一些小游戲,主要目的還是昨天說的,為了更快的得到正反饋,讓初學者提高編程興趣。 這是圖形庫的下載地址: http://pan.baidu.com/s/1qYfWJne安裝好后就可以用了。 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<graphics.h> #include<conio.h> #include<time.h>
我用的開發環境是Microsoft Visual Studio 當用到scanf()輸入函數或sprintf()字符串格式化輸入函數時會有安全警告。 第一句:#define _CRT_SECURE_NO_WARNINGS??? 作用是去掉vs的這個安全警告,具體原因將會在后面更新的博客中解說。 第三句:#include<graphics.h>?? 這就是調用我們安裝的easyX圖形庫了。 第四句:#include<conio.h>??? srand();rand();兩個函數所在的頭文件,srand()是初始化隨機種子,srand()配合time(NULL)用從而達到產生不重復的隨機數的目的,rand()是產生隨機數,srand()和rand()函數的具體解釋也在后面的博客中解說,現在只需依樣畫葫蘆便可。 第五句:#include<time.h>?? 是time()函數所在的頭文件。
int main() {initgraph(600, 400);//初始畫布600*400像素,和closegraph()成對出現int x, y;//字母隨機出現的坐標char target;//字母int key;//記錄用戶按鍵char s[10] = { 0 };//score:顯示得分char f[10] = { 0 };//wrong:顯示失敗分數int score = 0;int wrong = 0;sprintf(s,"SCORE:%d",score);//將整型score轉換成字符串,格式化寫入到字符型s中。outtextxy(0,350,s);//將s字符串得分在0*350的位置輸出sprintf(f, "WRONG:%d", wrong);//格式化輸入失分outtextxy(0, 375, f);//丟分輸出srand((unsigned int)time(NULL));//生成隨機種子//循環出現字母while (1){target = 65 + rand() % 26;//隨機生成大寫字母,65-90是大寫字母的ASCII碼,在標準的C庫中函數rand()可以生成0~RAND_MAX之間的一個 //隨機數,其中RAND_MAX 是stdlib.h 中定義的一個整數,故這句取值范圍:65-90x = 30 + rand() % 540;//字母在x軸出現的位置//判斷是否結束游戲if (wrong == 10){cleardevice();//清屏settextstyle(40,0,"宋體");//設置字體樣式settextcolor(RGB(177, 174, 46));//字體顏色sprintf(s, "SCORE:%d", score);//格式化輸入得分outtextxy(210,130,"GAME OVER");//輸出GAME OVERouttextxy(210, 180, s);//輸出得分break;//退出while循環}//字母掉落效果for (y = 0; y < 400; y++){settextcolor(RGB(177,174,46));//設置字母顏色outtextxy(x,y,target);//輸出字母//字母調到底部扣分if (y >= 390){wrong++;//扣分setfillcolor(BLACK);//填充顏色bar(x, y, x + 20, y + 20);//黑色矩形遮蓋字母settextcolor(WHITE);sprintf(f, "WRONG:%d", wrong);outtextxy(0, 375, f);//覆蓋上次計分break;//退出for循環}//判斷用戶是否按鍵else if (_kbhit()){key = _getch();//記錄按鍵//打字正確if (key == target || key == target + 32){score++;//加分setfillcolor(BLACK);bar(x,y,x+20,y+20);//遮蓋字母settextcolor(WHITE);sprintf(s, "SCORE:%d", score);outtextxy(0, 350, s);//覆蓋上次分數break;//退出for循環}//打字錯誤else {wrong++;//丟分setfillcolor(BLACK);bar(x, y, x + 20, y + 20);//遮蓋字母settextcolor(WHITE);sprintf(f, "WRONG:%d", wrong);outtextxy(0, 375, f);//覆蓋分數break;//退出for循環}}Sleep(8);//設置字母下落速度//防止字母掉落時遮蓋得得分輸出處//y++一次就輸出一次得分settextcolor(WHITE);outtextxy(0, 350, s);outtextxy(0, 375, f);}}getchar();//防止閃屏closegraph();//關閉畫布return 0; } 運行后的效果:

在后面的博客中我將會加上貼圖技術,和音樂,大致效果:

總結

以上是生活随笔為你收集整理的详细讲解C语言单机小游戏——打字母游戏的全部內容,希望文章能夠幫你解決所遇到的問題。

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