才知道EGE是可以做3D游戏呢,不过仔细想一想我做游戏的目的又是啥?现阶段无非就是搞出一个逻辑复杂,能锻炼编程思维的东西,最好是2.5D俯视角而且要多借鉴github等复杂的项目,变成自己的东西。最好做出新一个饥荒,元气骑士,合金弹头,僵尸危机,环世界,矮人要塞之类的。

#include #include #include #include #include using namespace std; #define SCREEN_WIDTH 900 #define SCREEN_HEIGHT 700

class Object{
int life;
PIMAGE img;
int x;
int y;
float speed;
void border(){
if(this->x < 0){
this->x = SCREEN_WIDTH-getwidth(this->img);
}else if(this->x > SCREEN_WIDTH-getwidth(this->img)){
this->x = 0;
}else if(this->y < 0){
this->y = SCREEN_HEIGHT-getheight(this->img);
}else if(this->y >SCREEN_HEIGHT-getheight(this->img)){
this->y = 0;
}
}
public:
Object(LPCSTR file,float speed){
random_device rd; // 随机数种子
mt19937 gen(rd()); // 使用Mersenne Twister 19937算法生成随机数引擎
uniform_real_distribution dis(0.0, 1.0); // 定义在[0, 1)范围内的均匀分布随机数
double random = dis(gen); // 生成0到1之间的随机数
this->x = randomSCREEN_WIDTH;
this->y = random
SCREEN_HEIGHT;
this->life = 0;
this->speed = speed;
this->img = newimage();
getimage(this->img,file);
//LPCSTR为图片路径
}
void move(char k){
border();
if (k == 'w') {
this->y -= this->speed;
} else if (k == 's') {
this->y += this->speed;
} else if (k == 'a') {
this->x -= this->speed;
} else if (k == 'd') {
this->x += this->speed;
}
}
void display(){
putimage(this->x,this->y,this->img);
}
};

class Managemet{
public:
Managemet(){
initgraph(SCREEN_WIDTH,SCREEN_HEIGHT);
setcaption("Magic World");
setbkcolor(WHITE);
}
Object create_player(LPCSTR s="player.png",float speed = 3){
Object p(s,speed);
return p;
}
void start(){
Object p = create_player();
// //60帧(FPS)
// for (; is_run(); delay_fps(60)){
//
// }
// 当没有按下ESC键时循环
while (!kbhit() || getch() != 27) {
cleardevice(); // 清空窗口
if (keystate(key_W)) {
p.move('w');
}else if(keystate(key_S)){
p.move('s');
}else if(keystate(key_A)){
p.move('a');
}else if(keystate(key_D)){
p.move('d');
}
p.display();
Sleep(10);
}
}
~Managemet(){
closegraph();
// 关闭图形窗口
}
};

int main()
{
Managemet m;
m.start();
return 0;
}
// getch();暂停程序,等待用户按下任意键(除暂停作用外,不建议使用)
// 使用newimage() 创建的图像是动态内存分配的图像,不使用时需要使用 delimage(pimg) 进行销毁