1. 程式人生 > >打字遊戲初級版——C語言

打字遊戲初級版——C語言

其中用到了圖形庫graphics.h

在網路課程中學到的。


#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;
}
載入了本地圖片,如果需要的話可以下載玩玩,不喜勿噴。http://pan.baidu.com/s/1o8CnVJk