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個球中乙個重量不同的球,注意這個球並不一定比別的球重,也不一定輕。題目很簡單,但通常大...