溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言游戲項目球球大作戰怎么實現

發布時間:2022-01-24 09:22:16 來源:億速云 閱讀:180 作者:kk 欄目:開發技術

這篇文章的內容主要圍繞C語言游戲項目球球大作戰怎么實現進行講述,文章內容清晰易懂,條理清晰,非常適合新手學習,值得大家去閱讀。感興趣的朋友可以跟隨小編一起閱讀吧。希望大家通過這篇文章有所收獲!

    項目代碼 

     直接進入代碼階段吧,大家認真觀看。

    1、結構體

    struct Ball //小球結構,玩家,食物,人工智障
    {
    	int x;
    	int y;
    	int r;//半徑
    	DWORD color;//顏色
    	bool flag;//是否存在 
    };
    int score = 0;//分數
    struct Ball food[FOOD_NUM];
    struct Ball player;//玩家
    struct Ball ai[AI_NUM];

    2、初始化

    void GameInit()
    {
    	//播放背景音樂
    	mciSendString("open ./BallBGM.mp3 alias BGM", 0, 0, 0);
    	//mciSendString("play BGM repeat", 0, 0, 0);
    	//設置隨機數種子 時間是在不斷的變化的
    	srand((unsigned)time(NULL));
    	//找到每一個元素
    	for (int i = 0; i < FOOD_NUM; i++)
    	{
    		food[i].x = rand() % WIDTH;
    		food[i].y = rand() % HEIGHT;
    		food[i].flag = true;//剛開始食物是存在的,沒有被吃掉
    		food[i].r = rand() % 6 + 1;
    		food[i].color = RGB(rand() % 256, rand() % 256, rand() % 256);
    	}
    	//初始化玩家數據
    	player.x = rand() % WIDTH;
    	player.y = rand() % HEIGHT;
    	player.r = 18;//只要比最大的食物大就可以了
    	player.flag = true;
    	player.color= RGB(rand() % 256, rand() % 256, rand() % 256);
    	//初始化ai
    	for (int i = 0; i < AI_NUM; i++)
    	{
    		ai[i].x = rand() % WIDTH;
    		ai[i].y = rand() % HEIGHT;
    		ai[i].r = rand() % 10 + 5;
    		ai[i].flag = true;
    		ai[i].color = RGB(rand() % 256, rand() % 256, rand() % 256);
    	}
    }

    3、繪制函數 

    void GameDraw()
    {
    	//防止閃屏
    	BeginBatchDraw();
    	setbkcolor(WHITE);
    	cleardevice();//清屏
    	for (int i = 0; i < FOOD_NUM; i++)
    	{
    		if (food[i].flag)
    		{
    			setfillcolor(food[i].color);//設置填充顏色
    			solidcircle(food[i].x, food[i].y, food[i].r);//畫一個填充圓
    		}
    		else
    		{
    			food[i].x = rand() % WIDTH;
    			food[i].y = rand() % HEIGHT;
    			food[i].flag = true;//剛開始食物是存在的,沒有被吃掉
    			food[i].r = rand() % 6 + 1;
    			food[i].color = RGB(rand() % 256, rand() % 256, rand() % 256);
    		}
    	}
    	//繪制玩家
    	setfillcolor(player.color);//設置填充顏色
    	solidcircle(player.x, player.y, player.r);
    	settextcolor(GREEN);
    	settextstyle(30, 0, "黑體");
    	setbkmode(0);//設置文字背景透明
    	outtextxy(player.x-50, player.y, "我是最亮的崽");
    	//輸出分數
    	settextcolor(BLACK);
    	char str[20];
    	sprintf(str,"分數:%d",score);//格式化字符串
    	outtextxy(20, 20, str);
    	//繪制ai
    	for (int i = 0; i < AI_NUM; i++)
    	{
    		if (ai[i].flag)
    		{
    			setfillcolor(ai[i].color);//設置填充顏色
    			solidcircle(ai[i].x, ai[i].y, ai[i].r);//畫一個填充圓
    		}
    	}
    	EndBatchDraw();
    }

    4、玩家控制函數 

    void keyControl(int speed)
    {
    	//獲取鍵盤消息,按得是哪一個鍵  _getch();    GetAsyncKeyState() windows系統函數
    	if ((GetAsyncKeyState('W') || GetAsyncKeyState(VK_UP)) && player.y >= 0)//按了上鍵 y不能小于0
    	{
    		player.y -= speed;
    	}
    	if ((GetAsyncKeyState('S') || GetAsyncKeyState(VK_DOWN)) && player.y <= HEIGHT)//按了下鍵
    	{
    		player.y += speed;
    	}
    	if ((GetAsyncKeyState('A') || GetAsyncKeyState(VK_LEFT)) && player.x >= 0)//按了左鍵
    	{
    		player.x -= speed;
    	}
    	if ((GetAsyncKeyState('D') || GetAsyncKeyState(VK_RIGHT)) && player.x <= WIDTH)//按了右鍵
    	{
    		player.x += speed;
    	}
    }

    5、吃食物函數

    void eatFood()
    {
    	for (int i = 0; i < FOOD_NUM; i++)
    	{
    		if (food[i].flag && distance(food[i], player) <= player.r)
    		{
     
    			food[i].flag = false;
    			player.r += food[i].r / 4;
    			score++;//加分
    		}
    	}
    }

    6、電腦移動函數

    void aiMove()
    {
    	for (int i = 0; i < AI_NUM; i++)
    	{
    		if (ai[i].flag)
    		{
    			ai[i].x += rand() % 5-2;// ?%5={0,1,2,3,4}-2=={-2,-1,0,1,2}
    			ai[i].y += rand() % 5 - 2;//0 
    		}
    	}
    }

    7、主函數

    int main(int argc,char *agv[])
    {
    	initgraph(WIDTH, HEIGHT);
    	GameInit();
    	while (1)
    	{
    		keyControl(1);
    		GameDraw();
    		eatFood();
    		aiMove();
    	}
     
    	getchar();
    	return 0;
    }

    C語言是什么

    C語言是一門面向過程的、抽象化的通用程序設計語言,廣泛應用于底層開發,使用C語言可以以簡易的方式編譯、處理低級存儲器。

    感謝你的閱讀,相信你對“C語言游戲項目球球大作戰怎么實現”這一問題有一定的了解,快去動手實踐吧,如果想了解更多相關知識點,可以關注億速云網站!小編會繼續為大家帶來更好的文章!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女