admin 管理员组文章数量: 1184232
C语言小游戏逃生
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>
#include <time.h>/* 地图大小 */
#define High 24
#define Width 40#define SPACE 0 // 空地
#define WALL 1 // 城墙
#define PERSON 5 // 人物
#define MONSTER 9 // 怪物
#define MONSTER_NUM 15int person_x, person_y; /* 人物坐标 */
int monster_x[MONSTER_NUM], monster_y[MONSTER_NUM]; /* 怪物定义 */void show_map();
void startup();
void update_input();
void update_without();
void set_pos(int x, int y);int map[High][Width] =
{{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},{1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1},{1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1},{1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1},{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},{1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1},{1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1},{1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1},{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
};void set_pos(int x, int y)
{COORD coord;HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);coord.X = x;coord.Y = y;SetConsoleCursorPosition(handle, coord);
}void show_map()
{int i, j;for (i = 0; i < High; i++){for (j = 0; j < Width - 1; j++){switch (map[i][j]){case SPACE:printf(" "); break;case WALL:printf("#"); break;case PERSON:printf("%c", 2); break;case MONSTER:printf("%c", 1); break;}}printf("\n");}
}void startup()
{person_x = High / 2;person_y = Width / 2;int i = MONSTER_NUM - 1;srand(time(0));// rand()%(n-m+1)+m; [m,n]// 生成5个怪物while (i >= 0){monster_x[i] = rand() % (23 - 20 + 1) + 20;monster_y[i] = rand() % (38 - 1 + 1) + 1;if ((map[monster_x[i]][monster_y[i]]) == SPACE) // 判断是否重复怪物{map[monster_x[i]][monster_y[i]] = MONSTER;i--;}}
}void update_without() // 与用户输入无关的更新
{int k;static int m_speed = 0;if (m_speed < 3)m_speed++;// 敌人AI算法if (m_speed == 3){for (k = 0; k < MONSTER_NUM; k++){if (person_x == monster_x[k] &&person_y == monster_y[k]){printf("You dead... Bye !!!");Sleep(3000);exit(1);}if (person_x - monster_x[k] > 0){if (map[monster_x[k] + 1][monster_y[k]] != WALL &&map[monster_x[k] + 1][monster_y[k]] != MONSTER){map[monster_x[k]][monster_y[k]] = SPACE;monster_x[k]++;}}else{if (map[monster_x[k] - 1][monster_y[k]] != WALL &&map[monster_x[k] - 1][monster_y[k]] != MONSTER){map[monster_x[k]][monster_y[k]] = SPACE;monster_x[k]--;}}if (person_y - monster_y[k] > 0){if (map[monster_x[k]][monster_y[k] + 1] != WALL &&map[monster_x[k]][monster_y[k] + 1] != MONSTER){map[monster_x[k]][monster_y[k]] = SPACE;monster_y[k]++;}}else{if (map[monster_x[k]][monster_y[k] - 1] != WALL &&map[monster_x[k]][monster_y[k] - 1] != MONSTER){map[monster_x[k]][monster_y[k]] = SPACE;monster_y[k]--;}}map[monster_x[k]][monster_y[k]] = MONSTER;m_speed = 0;}}}void update_input()
{char input;if (kbhit()){input = getch();if (input == 'w'){if (map[person_x - 1][person_y] != WALL){map[person_x][person_y] = SPACE;person_x--;map[person_x][person_y] = PERSON;}}if (input == 's'){if (map[person_x + 1][person_y] != WALL){map[person_x][person_y] = SPACE;person_x++;map[person_x][person_y] = PERSON;}}if (input == 'a'){if (map[person_x][person_y - 1] != WALL){map[person_x][person_y] = SPACE;person_y--;map[person_x][person_y] = PERSON;}}if (input == 'd'){if (map[person_x][person_y + 1] != WALL){map[person_x][person_y] = SPACE;person_y++;map[person_x][person_y] = PERSON;}}}
}int main()
{startup();system("color f0");SetConsoleTitleA("是男人就坚持100s");SetConsoleOutputCP(437);CONSOLE_FONT_INFOEX info = { 0 };info.cbSize = sizeof(info);info.FontWeight = FW_HEAVY;info.dwFontSize.Y = 16;wcscpy(info.FaceName, L"Consolas");SetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), NULL, &info);while (1){set_pos(0, 0);show_map();update_without();update_input();}
}
本文标签: C语言小游戏逃生
版权声明:本文标题:C语言小游戏逃生 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.roclinux.cn/p/1698026725a283343.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论