当前位置: 首页 > news >正文

北京高级网站开发网站建设需要注意那些点

北京高级网站开发,网站建设需要注意那些点,网站开发 云智互联,网站建设多长时间能学会前言#xff1a; 这款简易版的球球大作战是一款单人游戏#xff0c;玩家需要控制一个小球在地图上移动#xff0c;吞噬其他小球来增大自己的体积。本游戏使用C语言和easyx图形库编写#xff0c;旨在帮助初学者了解游戏开发的基本概念和技巧。 在开始编写代码之前#xf…  前言 这款简易版的球球大作战是一款单人游戏玩家需要控制一个小球在地图上移动吞噬其他小球来增大自己的体积。本游戏使用C语言和easyx图形库编写旨在帮助初学者了解游戏开发的基本概念和技巧。 在开始编写代码之前我们需要先了解一下游戏的基本规则和功能 游戏界面游戏界面是一个矩形区域玩家可以在这个区域内控制球的移动。 玩家小球玩家控制的小球可以在游戏界面内自由移动按下空格键可以加速。 其他小球其他小球又分为食物小球和ai控制的小球 体积玩家每吃一个其他小球体积就会增大一点ai小球也可以通过吃食物和玩家小球增大体积。 玩家被吃当玩家小球被ai小球吃了玩家小球就会回到初始点体积也会变成初始大小。 ai小球的追击和逃跑当玩家小球与ai小球靠近时ai小球会根据自身体积的大小选择追击玩家小球或者逃跑。 接下来我们将通过以下几个步骤来实现这个游戏 初始化游戏界面和小球的信息。 处理键盘输入实现玩家小球的移动和加速。 生成足够数量的食物小球。 生成ai小球并控制其移动。 检测小球之间的吞噬关系增加相应的体积。 通过学习这个游戏的开发过程初学者将能够掌握C语言编程和easyx图形库的基本技巧。 1. 小球的要素 在此游戏中一个小球的要素无非就是小球所在的位置坐标、小球的半径、以及小球的颜色这里我们可以用一个结构体数组来存放这些要素以方便初始化小球的信息。 struct Ball {int x;int y;float r;DWORD color; }; 2. 初始化小球的信息 将玩家小球的初始位置设置在窗口的中间半径大小为10。食物小球和ai小球的位置则通过rand函数、srand函数和time函数生成的随机数随机分布在地图的各个位置食物小球半径为1-5ai小球的半径10.其中在这里使用了RGB随机生成一个颜色使每个食物小球的颜色都不尽相同。 RGB色彩模式是一种工业标准它通过红R、绿G、蓝B三个颜色通道的组合来表示不同的颜色。每个通道通常分配一个0到255之间的数值其中0表示该颜色通道没有亮度255表示该颜色通道的最大亮度。通过调整这三个通道的值可以生成几乎所有人类视觉系统能够感知的颜色。例如 橙色可以通过RGB值255, 128, 0来表示。黄色的RGB值为255, 255, 0。绿色的RGB值是0, 255, 0。蓝色的RGB值为0, 0, 255。紫色可以通过RGB值170, 0, 255来表示。黑色的RGB值为0, 0, 0。白色的RGB值为255, 255, 255。灰色的RGB值可以是128, 128, 128其中三个值相等即可值越接近255颜色就越接近白色反之亦然。 void Inset() {//玩家小球srand((unsigned)time(NULL));player.x Wide / 2;player.y Hight / 2;player.r 10;//食物小球for (int i 0; i Food_num; i){Food[i].x rand() % Wide_map;Food[i].y rand() % Hight_map;Food[i].r rand() % 5 1;Food[i].color RGB(rand() % 256, rand() % 256, rand() % 256);}//ai小球for (int i 0; i Enemy_num; i){Enemy[i].x rand() % Wide_map;Enemy[i].y rand() % Hight_map;Enemy[i].r 10;Enemy[i].color RGB(0,255,0);}} 3. 玩家操作小球 在这里需要用到GetAsyncKeyState(vk virtual key)函数获取异步按键状态,其中vk virtual key是虚拟键值如果接受到这个虚拟键值它会返回真。VK_UP、VK_DOWN、VK_LEFT、VK_RIGHT、0x20分别是上箭头键、下箭头键、左箭头键、右箭头键、空格键的虚拟键值。 void Player_move() {if (GetAsyncKeyState(VK_UP)){if (player.y 0){player.y - player_sleep;}}if (GetAsyncKeyState(VK_DOWN)){if (player.y Hight_map)player.y player_sleep;}if (GetAsyncKeyState(VK_LEFT)){if (player.x 0)player.x - player_sleep;}if (GetAsyncKeyState(VK_RIGHT)){if (player.x Wide_map)player.x player_sleep;}if (GetAsyncKeyState(0x20)){player_sleep l 5;}else{player_sleep l;} } 4. 显示出小球 在此游戏中小球是一个实心圆在easyx图形库中提供了一个画实心圆的函数—solidcircle函数通过它我们就可以在窗口中显示小球了但显示出的小球默认颜色为白色为了区分不同的小球我们还需使用setfillcolor函数来改变小球的颜色。因为显示的函数、玩家操作小球的函数等函数都是放在同一个while循环重复执行的这样就会重复显示小球所以我们还需要用到一个清屏函数cleardevice。为了使窗口更好看可以使用setbkcolor函数修改窗口的背景颜色以及使用line函数在窗口中画一些线函数setlinecolor可以改变线的颜色。 void Show() {//设置地图SetWorkingImage(map);//清屏cleardevice();//背景颜色setbkcolor(WHITE);//划线颜色setlinecolor(RGB(230,231,239));//划线for (int i 0; i Wide_map; i 10){line(i, 0, i, Hight_map);}for (int i 0; i Hight_map; i 10){line(0, i, Wide_map, i);}//食物for (int i 0; i Food_num; i){setfillcolor(Food[i].color);solidcircle(Food[i].x, Food[i].y, Food[i].r);}//敌人for (int i 0; i Enemy_num; i){setfillcolor(Enemy[i].color);solidcircle(Enemy[i].x, Enemy[i].y, Enemy[i].r);}//玩家setfillcolor(RED);solidcircle(player.x, player.y, player.r);SetWorkingImage();int x player.x - (Wide / 2);int y player.y - (Hight / 2);//防止窗口越界if (x 0){x 0;}if (y 0){y 0;}if (x Wide_map - Wide){x Wide_map - Wide;}if (y Hight_map - Hight){y Hight_map - Hight;}//把map输出到窗口上putimage(0, 0, Wide, Hight, map, x, y); } 5. 生成地图 可以使用IMAGE map(Wide_map, Hight_map) 创建一个图像映射其中 Wide_map 代表图像的宽度而 Hight_map 代表图像的高度。然后使用SetWorkingImage(map)将map的地址作为参数传递给SetWorkingImage函数。这个函数的作用是将map作为当前操作的对象以便在后续的图像处理过程中使用。最后使用putimage(0, 0, Wide, Hight, map, x, y) 将地址绘制到窗口上其中要让玩家小球始终出现在窗口的中央位置那么其中的xplayer.x - (Wide / 2);yplayer.y - (Hight / 2);但是单单这样写就会出现窗口越界的情况所以我们还需要限制x和y的范围 //防止窗口越界 if (x 0) {x 0; } if (y 0) {y 0; } if (x Wide_map - Wide) {x Wide_map - Wide; } if (y Hight_map - Hight) {y Hight_map - Hight; } putimage(0, 0, Wide, Hight, map, x, y) 这个函数调用是用于在屏幕上的特定位置绘制或显示一个图像。下面是对这个函数调用中各个参数的具体解释 (0, 0)这是图像要绘制的目标位置的左上角坐标即x0和y0通常表示屏幕的左上角。 Wide这个参数指定了要绘制的图像的宽度。 Hight这个参数指定了要绘制的图像的高度。 map这是一个指向图像内存地址的指针该图像将被绘制到屏幕上。在这个上下文中map可能是一个包含了图像数据的数据结构或数组。 x这个参数通常指定了要开始绘制图像的起始点的x坐标在图像数据中。 y这个参数通常指定了要开始绘制图像的起始点的y坐标在图像数据中。 6. ai小球的移动 随机生成0-3的数字分别代表ai小球上下左右的移动这样小球就会自由移动了。当玩家小球与ai小球靠近时ai小球会追击或者逃跑这里我们需要先计算小球的之间的距离小球之间的距离就是两小球的圆心坐标的x相减的平方加上y相减的平方再开根号。开根号的函数为sqrt它的头文件是math.h。 //距离 int Distance(int x, int y, int x1, int y1) {return sqrt((x - x1) * (x - x1) (y - y1) * (y - y1)); } 然后判断两小球的距离是否小于50个像素点即判断是否小于玩家小球的半径  ai小球的半径  50。判断完后比较两小球的半径大小如果ai小球的半径大于玩家小球的半径那么ai小球就要追击玩家小球即ai小球的坐标需要靠近玩家小球的坐标就是如果ai小球的x大于玩家小球的x那么ai小球的x就减小同理可得剩下的操作。 void Enemy_move() {srand((unsigned)time(NULL));for (int i 0; i Enemy_num; i){int direction rand() % 4;if (Distance(player.x, player.y, Enemy[i].x, Enemy[i].y) player.r Enemy[i].r 50){if (direction 0){if (Enemy[i].y 0)//防止小球越界的判断语句{Enemy[i].y - enemy_sleep;}}if (direction 1){if (Enemy[i].y Hight_map)Enemy[i].y enemy_sleep;}if (direction 2){if (Enemy[i].x 0)Enemy[i].x - enemy_sleep;}if (direction 3){if (Enemy[i].x Wide_map)Enemy[i].x enemy_sleep;}}//敌人追击玩家if (Distance(player.x, player.y, Enemy[i].x, Enemy[i].y) player.r Enemy[i].r 50){if (Enemy[i].r player.r){if (Enemy[i].x player.x){if (Enemy[i].x Wide_map){Enemy[i].x enemy_sleep;}}if (Enemy[i].x player.x){if (Enemy[i].x 0){Enemy[i].x - enemy_sleep;}}if (Enemy[i].y player.y){if (Enemy[i].y Hight_map){Enemy[i].y enemy_sleep;}}if (Enemy[i].y player.y){if (Enemy[i].y 0){Enemy[i].y - enemy_sleep;}}}//敌人逃跑else{if (Enemy[i].x player.x){if (Enemy[i].x 0){Enemy[i].x - enemy_sleep;}}if (Enemy[i].x player.x){if (Enemy[i].x Wide_map){Enemy[i].x enemy_sleep;}}if (Enemy[i].y player.y){if (Enemy[i].y 0){Enemy[i].y - enemy_sleep;}}if (Enemy[i].y player.y){if (Enemy[i].y Hight_map){Enemy[i].y enemy_sleep;}}}}} } 7. 小球之间的吞噬关系 玩家小球与ai小球、ai小球与ai小球 当两小球的圆心小于最大的那个圆的半径时小的那个球就会被吃掉。吃点就是那个小球重新找个位置生成。吃完后吃的那个小球半径增加被吃小球半径的十分之一。 ai小球与食物小球、玩家小球与食物小球同上。 void EatFood() {for (int i 0; i Food_num; i){//玩家吃食物if (Distance(player.x, player.y, Food[i].x, Food[i].y) player.r){player.r Food[i].r / 100;Food[i].x rand() % Wide_map;Food[i].y rand() % Hight_map;Food[i].r rand() % 5 1;Food[i].color RGB(rand() % 256, rand() % 256, rand() % 256);}}for (int j 0; j Enemy_num; j){//敌人吃食物for (int i 0; i Food_num; i){if (Distance(Enemy[j].x, Enemy[j].y, Food[i].x, Food[i].y) Enemy[j].r){Enemy[j].r Food[i].r / 50;Food[i].x rand() % Wide_map;Food[i].y rand() % Hight_map;Food[i].r rand() % 5 1;Food[i].color RGB(rand() % 256, rand() % 256, rand() % 256);}}//敌人吃敌人for (int i 0; i Enemy_num; i){if (Distance(Enemy[j].x, Enemy[j].y, Enemy[i].x, Enemy[i].y) Enemy[j].r Enemy[j].r Enemy[i].r){Enemy[j].r Enemy[i].r / 10;Enemy[i].x rand() % Wide_map;Enemy[i].y rand() % Hight_map;Enemy[i].r 10;Enemy[i].color RGB(0, 255, 0);}if (Distance(Enemy[j].x, Enemy[j].y, Enemy[i].x, Enemy[i].y) Enemy[i].r Enemy[j].r Enemy[i].r){Enemy[i].r Enemy[j].r / 10;Enemy[j].x rand() % Wide_map;Enemy[j].y rand() % Hight_map;Enemy[j].r 10;Enemy[j].color RGB(0, 255, 0);}}if (Distance(player.x, player.y, Enemy[j].x, Enemy[j].y) player.r){//玩家吃敌人if (player.r Enemy[j].r){player.r Enemy[j].r / 10;Enemy[j].x rand() % Wide_map;Enemy[j].y rand() % Hight_map;Enemy[j].r 10;Enemy[j].color RGB(0, 255, 0);}//敌人吃玩家else{if (invincibility 0){Enemy[j].r player.r / 10;player.x Wide / 2;player.y Hight / 2;player.r 10;invincibility 10;}}}} } 最终效果 球球大作战 源码 #includestdio.h #includeeasyx.h #includetime.h #includemath.h #define Wide 1024 #define Hight 640 #define Wide_map (Wide*5) #define Hight_map (Hight*5) #define Food_num 1888 #define Enemy_num 888 //整个游戏地图 IMAGE map(Wide_map, Hight_map); //复活时的无敌时间 int invincibility 10; //玩家速度 int player_sleep 5; int l 5; int enemy_sleep 5; struct Ball {int x;int y;float r;DWORD color; }; struct Ball player; struct Ball Food[Food_num]; struct Ball Enemy[Enemy_num]; //初始化球的数据 void Inset() {srand((unsigned)time(NULL));player.x Wide / 2;player.y Hight / 2;player.r 10;for (int i 0; i Food_num; i){Food[i].x rand() % Wide_map;Food[i].y rand() % Hight_map;Food[i].r rand() % 5 1;Food[i].color RGB(rand() % 256, rand() % 256, rand() % 256);}for (int i 0; i Enemy_num; i){Enemy[i].x rand() % Wide_map;Enemy[i].y rand() % Hight_map;Enemy[i].r 10;Enemy[i].color RGB(0,255,0);}} //玩家操作 void Player_move() {if (GetAsyncKeyState(VK_UP)){if (player.y 0){player.y - player_sleep;}}if (GetAsyncKeyState(VK_DOWN)){if (player.y Hight_map)player.y player_sleep;}if (GetAsyncKeyState(VK_LEFT)){if (player.x 0)player.x - player_sleep;}if (GetAsyncKeyState(VK_RIGHT)){if (player.x Wide_map)player.x player_sleep;}if (GetAsyncKeyState(0x20)){player_sleep l 5;}else{player_sleep l;} } //距离 int Distance(int x, int y, int x1, int y1) {return sqrt((x - x1) * (x - x1) (y - y1) * (y - y1)); } //敌人移动 void Enemy_move() {srand((unsigned)time(NULL));for (int i 0; i Enemy_num; i){int direction rand() % 400;if (Distance(player.x, player.y, Enemy[i].x, Enemy[i].y) player.r Enemy[i].r 50){if (direction 100){if (Enemy[i].y 0){Enemy[i].y - enemy_sleep;}}if (direction 200 direction 100){if (Enemy[i].y Hight_map)Enemy[i].y enemy_sleep;}if (direction 300 direction 200){if (Enemy[i].x 0)Enemy[i].x - enemy_sleep;}if (direction 400 direction 300){if (Enemy[i].x Wide_map)Enemy[i].x enemy_sleep;}}//敌人追击玩家if (Distance(player.x, player.y, Enemy[i].x, Enemy[i].y) player.r Enemy[i].r 50){if (Enemy[i].r player.r){if (Enemy[i].x player.x){if (Enemy[i].x Wide_map){Enemy[i].x enemy_sleep;}}if (Enemy[i].x player.x){if (Enemy[i].x 0){Enemy[i].x - enemy_sleep;}}if (Enemy[i].y player.y){if (Enemy[i].y Hight_map){Enemy[i].y enemy_sleep;}}if (Enemy[i].y player.y){if (Enemy[i].y 0){Enemy[i].y - enemy_sleep;}}}//敌人逃跑else{if (Enemy[i].x player.x){if (Enemy[i].x 0){Enemy[i].x - enemy_sleep;}}if (Enemy[i].x player.x){if (Enemy[i].x Wide_map){Enemy[i].x enemy_sleep;}}if (Enemy[i].y player.y){if (Enemy[i].y 0){Enemy[i].y - enemy_sleep;}}if (Enemy[i].y player.y){if (Enemy[i].y Hight_map){Enemy[i].y enemy_sleep;}}}}//for (int j 0; j Enemy_num; j)//{// if (Distance(Enemy[j].x, Enemy[j].y, Enemy[i].x, Enemy[i].y) Enemy[j].r Enemy[i].r 30)// {// //敌人追敌人// if (Enemy[i].r Enemy[j].r)// {// int sleep rand() % 6;// int enemy_sleep1;// if (sleep 2)// {// enemy_sleep1 enemy_sleep;// }// else// {// enemy_sleep1 enemy_sleep 5;// }// if (Enemy[i].x Enemy[j].x)// {// if (Enemy[i].x Wide_map)// {// Enemy[i].x enemy_sleep1;// }// }// if (Enemy[i].x Enemy[j].x)// {// if (Enemy[i].x 0)// {// Enemy[i].x - enemy_sleep1;// }// }// if (Enemy[i].y Enemy[j].y)// {// if (Enemy[i].y Hight_map)// {// Enemy[i].y enemy_sleep1;// }// }// if (Enemy[i].y Enemy[j].y)// {// if (Enemy[i].y 0)// {// Enemy[i].y - enemy_sleep1;// }// }// }// //逃跑// else// {// int sleep rand() % 6;// int enemy_sleep1;// if (sleep 2)// {// enemy_sleep1 enemy_sleep;// }// else// {// enemy_sleep1 enemy_sleep 5;// }// if (Enemy[i].x Enemy[j].x)// {// if (Enemy[i].x 0)// {// Enemy[i].x - enemy_sleep1;// }// }// if (Enemy[i].x Enemy[j].x)// {// if (Enemy[i].x Wide_map)// {// Enemy[i].x enemy_sleep1;// }// }// if (Enemy[i].y Enemy[j].y)// {// if (Enemy[i].y 0)// {// Enemy[i].y - enemy_sleep1;// }// }// if (Enemy[i].y Enemy[j].y)// {// if (Enemy[i].y Hight_map)// {// Enemy[i].y enemy_sleep1;// }// }// }// }//}} }//吃食物 void EatFood() {for (int i 0; i Food_num; i){//玩家吃食物if (Distance(player.x, player.y, Food[i].x, Food[i].y) player.r){player.r Food[i].r / 100;Food[i].x rand() % Wide_map;Food[i].y rand() % Hight_map;Food[i].r rand() % 5 1;Food[i].color RGB(rand() % 256, rand() % 256, rand() % 256);}}for (int j 0; j Enemy_num; j){//敌人吃食物for (int i 0; i Food_num; i){if (Distance(Enemy[j].x, Enemy[j].y, Food[i].x, Food[i].y) Enemy[j].r){Enemy[j].r Food[i].r / 50;Food[i].x rand() % Wide_map;Food[i].y rand() % Hight_map;Food[i].r rand() % 5 1;Food[i].color RGB(rand() % 256, rand() % 256, rand() % 256);}}//敌人吃敌人for (int i 0; i Enemy_num; i){if (Distance(Enemy[j].x, Enemy[j].y, Enemy[i].x, Enemy[i].y) Enemy[j].r Enemy[j].r Enemy[i].r){Enemy[j].r Enemy[i].r / 10;Enemy[i].x rand() % Wide_map;Enemy[i].y rand() % Hight_map;Enemy[i].r 10;Enemy[i].color RGB(0, 255, 0);}if (Distance(Enemy[j].x, Enemy[j].y, Enemy[i].x, Enemy[i].y) Enemy[i].r Enemy[j].r Enemy[i].r){Enemy[i].r Enemy[j].r / 10;Enemy[j].x rand() % Wide_map;Enemy[j].y rand() % Hight_map;Enemy[j].r 10;Enemy[j].color RGB(0, 255, 0);}}if (Distance(player.x, player.y, Enemy[j].x, Enemy[j].y) player.r){//玩家吃敌人if (player.r Enemy[j].r){player.r Enemy[j].r / 10;Enemy[j].x rand() % Wide_map;Enemy[j].y rand() % Hight_map;Enemy[j].r 10;Enemy[j].color RGB(0, 255, 0);}//敌人吃玩家else{if (invincibility 0){Enemy[j].r player.r / 10;player.x Wide / 2;player.y Hight / 2;player.r 10;invincibility 10;}}}} } //显示 void Show() {//设置地图SetWorkingImage(map);//清屏cleardevice();//背景颜色setbkcolor(WHITE);//划线颜色setlinecolor(RGB(230,231,239));//划线for (int i 0; i Wide_map; i 10){line(i, 0, i, Hight_map);}for (int i 0; i Hight_map; i 10){line(0, i, Wide_map, i);}//食物for (int i 0; i Food_num; i){setfillcolor(Food[i].color);solidcircle(Food[i].x, Food[i].y, Food[i].r);}//敌人for (int i 0; i Enemy_num; i){setfillcolor(Enemy[i].color);solidcircle(Enemy[i].x, Enemy[i].y, Enemy[i].r);}//玩家setfillcolor(RED);solidcircle(player.x, player.y, player.r);SetWorkingImage();int x player.x - (Wide / 2);int y player.y - (Hight / 2);//防止窗口越界if (x 0){x 0;}if (y 0){y 0;}if (x Wide_map - Wide){x Wide_map - Wide;}if (y Hight_map - Hight){y Hight_map - Hight;}//把map输出到窗口上putimage(0, 0, Wide, Hight, map, x, y); } int main() {initgraph(Wide, Hight);Inset();//缓冲BeginBatchDraw();while (1){if (invincibility 0)invincibility--;Show();//玩家操作Player_move();Enemy_move();EatFood();//刷新FlushBatchDraw();}closegraph();return 0; } //修改版 #includestdio.h #includeeasyx.h #includetime.h #includemath.h #define Wide 1139 #define Hight 640 #define Wide_map (Wide*5) #define Hight_map (Hight*5) #define Food_num 2888 #define Enemy_num 388 #define Invincibility 50 //整个游戏地图 IMAGE map(Wide_map, Hight_map); //复活时的无敌时间 int invincibility Invincibility; //玩家速度 int player_sleep 2; int l 2; int enemy_sleep 2; struct Ball {int x;int y;float r;DWORD color; }; struct Ball player; struct Ball Food[Food_num]; struct Ball Enemy[Enemy_num]; //初始化球的数据 void Inset() {srand((unsigned)time(NULL));player.x Wide / 2;player.y Hight / 2;player.r 15;for (int i 0; i Food_num; i){Food[i].x rand() % Wide_map;Food[i].y rand() % Hight_map;Food[i].r rand() % 5 1;Food[i].color RGB(rand() % 256, rand() % 256, rand() % 256);}for (int i 0; i Enemy_num; i){Enemy[i].x rand() % Wide_map;Enemy[i].y rand() % Hight_map;Enemy[i].r rand() % 15 15;Enemy[i].color RGB(rand() % 256, rand() % 256, rand() % 256);}} //玩家操作 void Player_move() {if (GetAsyncKeyState(VK_UP)|| GetAsyncKeyState(0x57)){if (player.y 0){player.y - player_sleep;}}if (GetAsyncKeyState(VK_DOWN)||GetAsyncKeyState(83)){if (player.y Hight_map)player.y player_sleep;}if (GetAsyncKeyState(VK_LEFT)|| GetAsyncKeyState(65)){if (player.x 0)player.x - player_sleep;}if (GetAsyncKeyState(VK_RIGHT)|| GetAsyncKeyState(68)){if (player.x Wide_map)player.x player_sleep;}if (GetAsyncKeyState(0x20)){player_sleep l 2;}else{player_sleep l;} } //距离 int Distance(int x, int y, int x1, int y1) {return sqrt((x - x1) * (x - x1) (y - y1) * (y - y1)); } //敌人移动 void Enemy_move() {srand((unsigned)time(NULL));for (int i 0; i Enemy_num; i){int direction rand() % 400;if (Distance(player.x, player.y, Enemy[i].x, Enemy[i].y) player.r Enemy[i].r 50){if (direction 100){if (Enemy[i].y 0){Enemy[i].y - enemy_sleep;}}if (direction 200 direction 100){if (Enemy[i].y Hight_map)Enemy[i].y enemy_sleep;}if (direction 300 direction 200){if (Enemy[i].x 0)Enemy[i].x - enemy_sleep;}if (direction 400 direction 300){if (Enemy[i].x Wide_map)Enemy[i].x enemy_sleep;}}//敌人追击玩家if (Distance(player.x, player.y, Enemy[i].x, Enemy[i].y) player.r Enemy[i].r 50){if (Enemy[i].r player.r){if (Enemy[i].x player.x){if (Enemy[i].x Wide_map){Enemy[i].x enemy_sleep;}}if (Enemy[i].x player.x){if (Enemy[i].x 0){Enemy[i].x - enemy_sleep;}}if (Enemy[i].y player.y){if (Enemy[i].y Hight_map){Enemy[i].y enemy_sleep;}}if (Enemy[i].y player.y){if (Enemy[i].y 0){Enemy[i].y - enemy_sleep;}}}//敌人逃跑else{if (Enemy[i].x player.x){if (Enemy[i].x 0){Enemy[i].x - enemy_sleep;}}if (Enemy[i].x player.x){if (Enemy[i].x Wide_map){Enemy[i].x enemy_sleep;}}if (Enemy[i].y player.y){if (Enemy[i].y 0){Enemy[i].y - enemy_sleep;}}if (Enemy[i].y player.y){if (Enemy[i].y Hight_map){Enemy[i].y enemy_sleep;}}}}} }//吃食物 void EatFood() {for (int i 0; i Food_num; i){//玩家吃食物if (Distance(player.x, player.y, Food[i].x, Food[i].y) player.r){player.r Food[i].r / 50;Food[i].x rand() % Wide_map;Food[i].y rand() % Hight_map;Food[i].r rand() % 5 1;Food[i].color RGB(rand() % 256, rand() % 256, rand() % 256);}}for (int j 0; j Enemy_num; j){//敌人吃食物for (int i 0; i Food_num; i){if (Distance(Enemy[j].x, Enemy[j].y, Food[i].x, Food[i].y) Enemy[j].r){Enemy[j].r Food[i].r / 50;Food[i].x rand() % Wide_map;Food[i].y rand() % Hight_map;Food[i].r rand() % 5 1;Food[i].color RGB(rand() % 256, rand() % 256, rand() % 256);}}//敌人吃敌人for (int i 0; i Enemy_num; i){if (Distance(Enemy[j].x, Enemy[j].y, Enemy[i].x, Enemy[i].y) Enemy[j].r Enemy[j].r Enemy[i].r){Enemy[j].r Enemy[i].r / 10;Enemy[i].x rand() % Wide_map;Enemy[i].y rand() % Hight_map;Enemy[i].r rand() % 10 15;Enemy[i].color RGB(rand() % 256, rand() % 256, rand() % 256);}if (Distance(Enemy[j].x, Enemy[j].y, Enemy[i].x, Enemy[i].y) Enemy[i].r Enemy[j].r Enemy[i].r){Enemy[i].r Enemy[j].r / 10;Enemy[j].x rand() % Wide_map;Enemy[j].y rand() % Hight_map;Enemy[j].r rand() % 10 15;Enemy[j].color RGB(rand() % 256, rand() % 256, rand() % 256);}}if (Distance(player.x, player.y, Enemy[j].x, Enemy[j].y) player.r){//玩家吃敌人if (player.r Enemy[j].r){player.r Enemy[j].r / 10;Enemy[j].x rand() % Wide_map;Enemy[j].y rand() % Hight_map;Enemy[j].r rand() % 10 15;Enemy[j].color RGB(rand() % 256, rand() % 256, rand() % 256);}//敌人吃玩家else{if (invincibility 0){Enemy[j].r player.r / 10;player.x Wide / 2;player.y Hight / 2;player.r 15;invincibility Invincibility;}}}} } //显示 void Show() {//设置地图SetWorkingImage(map);//清屏cleardevice();//背景颜色setbkcolor(RGB(46, 47, 68));//划线颜色//setlinecolor(RGB(230,231,239));划线//for (int i 0; i Wide_map; i 10)//{// line(i, 0, i, Hight_map);//}//for (int i 0; i Hight_map; i 10)//{// line(0, i, Wide_map, i);//}//食物for (int i 0; i Food_num; i){setfillcolor(Food[i].color);solidcircle(Food[i].x, Food[i].y, Food[i].r);}//敌人for (int i 0; i Enemy_num; i){setfillcolor(Enemy[i].color);solidcircle(Enemy[i].x, Enemy[i].y, Enemy[i].r);}//玩家setfillcolor(RED);solidcircle(player.x, player.y, player.r);SetWorkingImage();int x player.x - (Wide / 2);int y player.y - (Hight / 2);//防止窗口越界if (x 0){x 0;}if (y 0){y 0;}if (x Wide_map - Wide){x Wide_map - Wide;}if (y Hight_map - Hight){y Hight_map - Hight;}//把map输出到窗口上putimage(0, 0, Wide, Hight, map, x, y); } int main() {initgraph(Wide, Hight);Inset();//缓冲BeginBatchDraw();while (1){if (invincibility 0)invincibility--;Show();//玩家操作Player_move();Enemy_move();EatFood();//刷新FlushBatchDraw();}closegraph();return 0; }
http://www.dnsts.com.cn/news/9299.html

相关文章:

  • 沧州制作网站电商平台软件开发公司
  • 关于网站建设的请示范文h5如何做多页面网站
  • 加强机关网站内容建设入返晋人员登记网页怎么制作
  • 长沙便宜做网站wordpress社交类主题
  • 网页设计网站总结报告怎么写微慕WordPress开发
  • 网站建设服务费税率多少钱网站建设背景朝阳
  • 青岛硅谷网站建设公司做企业网站好处
  • 做基金哪个网站好坑梓做网站公司怎么样
  • 建立网站有什么用学校门户网站模板
  • 用ps做三网站横幅wordpress登录前后菜单
  • 西安网站建设开发公司公众号电影网站怎么做
  • 外贸网站 海外推广软件工程专业考研考什么
  • 学校资源门户网站建设方案html网页设计代码word文档
  • 网站设计项目书视频广告宣传片制作
  • 如何选择网站制作公司好站站网站建设推广
  • 网站建设找实体还是淘宝图片编辑软件加文字
  • 杭州pc网站制作公司dede手机医院网站模板
  • 深圳建设商城网站个人音乐网站程序源码
  • 网站平台开发诚信网站备案
  • 网站建设活动策划单位建网站的详细步骤
  • 曲靖 曲靖网站建设软件(app)开发wordpress图片要求
  • 阿里巴巴网站icp编号怎么查学生个人网页制作html报告
  • ps网站建设教程怎么查询网站开发时间
  • 查询网站mx记录有做ppt的兼职网站吗
  • 如何建立本站站点微信公众号网页怎么制作
  • 网站做浮动边框asp代码wordpress管理员怎么进
  • 最新网站模板免费下载网站做两个月百度没有录取
  • 网站开发费用属无形资产吗wordpress 大附件
  • 上海网站建设自学华强北网站建设设计
  • 淄川响应式网站建设网站制作首页