帮我用c语言写一个射击小游戏
时间: 2023-04-02 17:03:57 浏览: 627
纯c语言射击类游戏
5星 · 资源好评率100%
好的,我可以为您提供一个基本的射击小游戏的代码框架,您可以根据自己的需求进行修改和完善:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
#define WIDTH 50
#define HEIGHT 20
int x, y; // 玩家坐标
int score; // 得分
void gotoxy(int x, int y) // 光标定位函数
{
COORD pos = {x, y};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}
void draw_border() // 绘制边框
{
int i, j;
for (i = ; i < HEIGHT; i++) {
for (j = ; j < WIDTH; j++) {
if (i == || i == HEIGHT - 1 || j == || j == WIDTH - 1) {
gotoxy(j, i);
printf("#");
}
}
}
}
void draw_player() // 绘制玩家
{
gotoxy(x, y);
printf("A");
}
void draw_bullet(int bx, int by) // 绘制子弹
{
gotoxy(bx, by);
printf("|");
}
void draw_enemy(int ex, int ey) // 绘制敌人
{
gotoxy(ex, ey);
printf("V");
}
void update_score() // 更新得分
{
gotoxy(WIDTH + 2, 2);
printf("Score: %d", score);
}
int main()
{
char ch;
int bx, by; // 子弹坐标
int ex, ey; // 敌人坐标
int i, j;
int bullet_exist = ; // 子弹是否存在
int enemy_exist = ; // 敌人是否存在
x = WIDTH / 2;
y = HEIGHT - 2;
score = ;
draw_border();
draw_player();
update_score();
while (1) {
if (kbhit()) { // 检测键盘输入
ch = getch();
if (ch == 'a' && x > 1) {
x--;
}
if (ch == 'd' && x < WIDTH - 2) {
x++;
}
if (ch == 'w' && !bullet_exist) { // 发射子弹
bx = x;
by = y - 1;
bullet_exist = 1;
}
}
if (bullet_exist) { // 子弹存在时更新坐标
draw_bullet(bx, by);
by--;
if (by == ) { // 子弹到达边界,消失
gotoxy(bx, by);
printf(" ");
bullet_exist = ;
}
if (enemy_exist && bx == ex && by == ey) { // 子弹击中敌人
score++;
gotoxy(ex, ey);
printf(" ");
enemy_exist = ;
bullet_exist = ;
update_score();
}
}
if (!enemy_exist) { // 敌人不存在时生成敌人
ex = rand() % (WIDTH - 2) + 1;
ey = rand() % 5 + 1;
enemy_exist = 1;
}
if (enemy_exist) { // 敌人存在时更新坐标
draw_enemy(ex, ey);
ey++;
if (ey == HEIGHT - 1) { // 敌人到达边界,消失
gotoxy(ex, ey);
printf(" ");
enemy_exist = ;
}
if (bx == ex && by == ey) { // 敌人撞到子弹,消失
score++;
gotoxy(ex, ey);
printf(" ");
enemy_exist = ;
bullet_exist = ;
update_score();
}
if (x == ex && y == ey) { // 玩家撞到敌人,游戏结束
gotoxy(WIDTH / 2 - 4, HEIGHT / 2);
printf("Game Over!");
gotoxy(WIDTH / 2 - 6, HEIGHT / 2 + 1);
printf("Your Score: %d", score);
gotoxy(, HEIGHT);
exit();
}
}
Sleep(50); // 控制游戏速度
}
return ;
}
阅读全文