開發乙個火過王者榮耀的遊戲,球球大作戰,原始碼分享!

2022-06-06 01:06:12 字數 3944 閱讀 9464

1 球球大作戰

在計算機逐步滲入社會生活各個層面的今天,計算機已經成為人們日常生活的一分,越來越多的人使用計算機辦公、娛樂等等。

球球大作戰是曾經風靡一時的手機遊戲,現在咱們用c語言來盤他~

2 背景知識

遊戲的基本操作包括鍵盤按下(上下左右四個方向,還有作弊測試按鍵空格鍵和a鍵),玩家可以在地圖上隨意移動,不過不能超出邊界。

不管是玩家還是ai都可以吃比自己小的球,反之也可以被吃,吃掉之後直徑會增大,增大演算法是被吃掉的半徑的1/4。如果玩家被吃掉,會在任意地方重新開始。

球球大作戰的設計原理:

球球大作戰遊戲分為幾個步驟:

✿ 第一步,使用自定義空白表示地圖;

✿ 第二步,繪製玩家,食物;

✿ 第三步,處理玩家移動,以及吃食物判斷;

✿ 第四步,繪製ai;

✿ 第五步,ai移動。

3 上**

先看**,然後自己去敲**練習哦~

如果你想深度學習基礎程式設計和高階程式設計——程式設計俱樂部【點選進入】!

涉及到:c語言、c++、windows程式設計、網路程式設計、qt介面開發、linux程式設計、遊戲程式設計、黑客等等......

程式設計入門資料:

乙個活躍、高逼格、高層次的程式設計師程式設計學習殿堂;程式設計入門只是順帶,思維的提高才有價值!

#include//

包含easyx圖形庫檔案

#include

//c語言時間標頭檔案

#include

//win32多**裝置介面檔案

#pragma comment(lib,"winmm.lib")//

win32多**裝置介面庫

#define win_width 1024 //

螢幕的寬

#define win_height 640//

576 //螢幕高

#define map_width (win_width*3) //

地圖寬度

#define map_height (win_height*3)//

地圖高度

#define food_num 500 //

食物數量

#define ai_num 200 //

ai數量

image map(map_width, map_height);

point g_camerapos;

//攝像機(螢幕左上角)在地圖上的位置

struct

ball

;struct ball mover; //

玩家struct ball food[food_num]; //

食物陣列

struct ball ai[ai_num]; //

ai數量

void chasealgorithom(ball *chase, ball *run);

float

distance(ball b1, ball b2);

void

gameinit()

//初始化ai

for (int i = 0; i < ai_num; i++)

}//遊戲地圖開始繪製位置判斷

void

computecamerapos()

//遊戲繪製

void

gamedraw()

else

if (food[i].type == 1

)

else

}else

} //畫ai

for (int i = 0; i < ai_num; i++)

else

} //繪製玩家

setfillcolor(red);

fillcircle(mover.x, mover.y, mover.r);

//繪製玩家名稱

settextcolor(black);

setbkmode(transparent);

settextstyle(

20, 0, "楷體"

);

char pname = "";

int twidth = textwidth(pname)/2;//

計算文字寬度為了居中顯示在玩家**

outtextxy(mover.x-twidth, mover.y, pname);

//恢復預設工作區,即視窗

setworkingimage();

//更新攝像機位置

computecamerapos();

//把地圖顯示到視窗上

putimage(

0, 0, win_width, win_height, &map, g_camerapos.x, g_camerapos.y);}//

玩家移動,引數為玩家移動的速度(單位畫素)

void gamemove(int

speed)

} if (getasynckeystate(vk_down) & 0x8000)

} if (getasynckeystate(vk_left) & 0x8000)

} if (getasynckeystate(vk_right) & 0x8000)

} //作弊測試,按空格不斷增大,a縮小

if (getasynckeystate(vk_space) & 0x8000)

if (getasynckeystate('

a') & 0x8000)

}//玩家吃食物

void

eatfood()

}}//玩家吃ai,ai吃玩家

void

eatai()

//ai吃玩家

else

if (distance(ai[i], mover) < ai[i].r - mover.r / 3

)

}}//ai吃食物,ai吃ai

void

aieatfood()

}//ai吃ai

for (int k = i + 1; k < ai_num; k++)

else

if (distance(ai[i], ai[k]) < ai[i].r - ai[k].r / 3

) }}

}}//ai移動演算法,追逐比自己半徑小的球

void

aimove()}}

}//如果找到目標,則去追逐

if ((min != -1

))

}}void

judeeat()

intmain()

t2 =gettickcount();

} getchar();

closegraph();

return0;

}//追逐演算法

void chasealgorithom(ball *chase, ball *run)

else

} else

else

}}//求兩點之間的距離

float

distance(ball b1, ball b2)

執行效果

如何用python寫乙個王者榮耀遊戲的外掛程式

但是我們可以寫個小遊戲 漢諾塔 的外掛程式,這個遊戲相信很多同學都玩過。開始是三層,還很簡單,四層還好,五層六層就有點費腦殼了。話不多說,言歸正傳 遞迴就是函式裡呼叫本身,直到出現停止的條件 廟裡有的三根柱子,第乙個有64個盤子,從上往下越來越大。要求廟裡的老和尚吧64個盤子全部移動到第三個柱子上。...

3次稱出12球中重量不同的乙個球的解答

今天,有個學生考了大家乙個智力題,不是什麼新鮮題,記得很早就看到過,由於學生們上課時都在想著這個題,沒心上課了,所以乾脆發揮自己做智力題的強項,在課間把題做了出來。題目是,乙個天平,12個球,只能稱三次,要找出12個球中乙個重量不同的球,注意這個球並不一定比別的球重,也不一定輕。題目很簡單,但通常大...

3次稱出12球中重量不同的乙個球的解答

今天,有個學生考了大家乙個智力題,不是什麼新鮮題,記得很早就看到過,由於學生們上課時都在想著這個題,沒心上課了,所以乾脆發揮自己做智力題的強項,在課間把題做了出來。題目是,乙個天平,12個球,只能稱三次,要找出12個球中乙個重量不同的球,注意這個球並不一定比別的球重,也不一定輕。題目很簡單,但通常大...