打字遊戲初級版——C語言
阿新 • • 發佈:2019-02-05
其中用到了圖形庫graphics.h
在網路課程中學到的。
載入了本地圖片,如果需要的話可以下載玩玩,不喜勿噴。http://pan.baidu.com/s/1o8CnVJk#include <stdio.h> #include <graphics.h> #include <Windows.h> #include <conio.h> #include <time.h> IMAGE backimg; IMAGE bamime; IMAGE state; #include <mmsystem.h> #pragma comment(lib,"winmm.lib") void Play()//進入遊戲 ————有字母從上方落下,字幕的x座標為座標0-640(自定)y為一個自加的過程 { cleardevice();//清屏 char TarLetter; //目標字母 char KeyLetter; int LetterX; int LetterY; int speed=1; int level=1; //定義難度 int score = 0; while (true) { setcolor(WHITE); setbkcolor(BLACK);//清屏並把背景變為相應顏色 setbkmode(TRANSPARENT);//背景格式 這裡TRANSPARENT為透明 //putimage(0, 0, 640, 480, &backimg, 0, 0, SRCCOPY); TarLetter = rand() % 26 + 65;//隨機出現大寫字母 26個字母中隨機取 A ascll 65 LetterX = rand() % 620;//現在的設定大小為640,防止字母跑出範圍 for (LetterY = 0; LetterY < 480; LetterY+=speed)//通過letterY++來控制速度 { cleardevice();//清屏 否則看起來是一個線條,因為迴圈一直往下掉 outtextxy(500, 440, L"退出請按回車"); setbkmode(TRANSPARENT);//背景格式 這裡TRANSPARENT為透明 //putimage(0, 0, 640, 480, &backimg, 0, 0, SRCCOPY); settextstyle(20, 0,L"宋體"); outtextxy(LetterX, LetterY, TarLetter);//不斷按位置輸出目標字母 Sleep(20);//下落的時候一直清屏會閃動,防止字母的閃爍 if (kbhit())//判斷有按鍵按下則判斷 { KeyLetter = getch();//接收按盤輸入 if (KeyLetter == '\n'|| KeyLetter == '\r')//如果是回車就退出系統 { char s[3];// = (char)score; s[0]=score/10; s[1] = score % 10; settextstyle(30, 0, L"黑體"); outtextxy(220, 150, L"得分為 "); outtextxy(380, 150, s[0]); outtextxy(385, 150, s[1]); outtextxy(220, 200, L"即將退出遊戲"); Sleep(600); exit(0); } else if(KeyLetter == TarLetter) { putimage(LetterX, LetterY, 271, 81,&bamime,0,0,SRCCOPY); Sleep(30);//提供圖片播放時間 score++;//分數加1; level++; if (level == 10) //每輸入十個就 加快遊戲速度 { level = 0; speed++; } break;//退出迴圈 再隨機生成字母 } } } } getch(); } void Welcome() { loadimage(&backimg, L"state.jpg", 640, 480); putimage(0, 0, 640, 480, &backimg, 0, 0, SRCCOPY); PlaySound(L"Maroon 5 - One More Night.wav", NULL, SND_FILENAME | SND_LOOP | SND_ASYNC); setcolor(RED);//字型顏色 setbkmode(TRANSPARENT);//背景格式 這裡TRANSPARENT為透明 settextstyle(60, 0, L"華文彩雲");//字型格式 outtextxy(140, 50, L"打字練習系統");//在指定座標列印文字 setcolor(BLUE); settextstyle(20, 0, L"宋體"); outtextxy(100, 200, L"自學介面程式設計"); outtextxy(100, 250, L"打字練習系統"); outtextxy(100, 300, L"版本1.0"); outtextxy(100, 350, L"退出請按回車"); int colorR = 255, colorG = 0; int speed = 5; while (!kbhit()) //kbhit 表示接收任意鍵 { setcolor(RGB(colorR, colorG, 0));//RGB(RED, GREEN, BLUE)顏色控制 設定3個數 outtextxy(260, 430, L"按空格鍵開始"); colorR += speed; colorG -= speed; if (colorG > 255|| colorG < 0) { speed = -speed;//當變色 } Sleep(20);//控制字型閃爍的速度 } } int main() { SetConsoleTitle(L"打字遊戲————Lee"); srand((unsigned int)time(NULL)); initgraph(640, 480); loadimage(&state, L"state", 640, 480); loadimage(&bamime, L"boom.jpg",271, 81); Welcome(); Play(); getchar(); return 0; }