C语言实现射击小游戏

以下是一个简单的C语言射击小游戏的实现示例。这个游戏中,玩家控制一个飞船,敌方飞船会随机出现并向玩家移动。如果玩家的飞船与敌方飞船相撞,玩家就失去一条生命,代码如下:

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#define WIDTH 10

#define HEIGHT 5

#define ENEMY_SHIP 'E'

#define PLAYER_SHIP 'S'

#define BULLET '|'

char game_field[HEIGHT][WIDTH + 1];

int player_ship_x = WIDTH / 2;

int enemy_ship_x = -1;

int enemy_ship_y = -1;

int bullet_x = -1;

int bullet_y = -1;

int lives = 3;

void draw_game_field() {

for (int i = 0; i < HEIGHT; i++) {

for (int j = 0; j < WIDTH; j++) {

if (j == player_ship_x && i == bullet_y) {

printf("%c", BULLET);

} else if (j == player_ship_x && i == 0) {

printf("%c", PLAYER_SHIP);

} else if (j == enemy_ship_x && i == enemy_ship_y) {

printf("%c", ENEMY_SHIP);

} else {

printf(" ");

}

}

printf("\n");

}

printf("Lives: %d\n", lives);

}

void move_enemy_ship() {

if (enemy_ship_x < WIDTH - 1) {

enemy_ship_x++;

} else {

enemy_ship_y++;

enemy_ship_x = 0;

}

if (enemy_ship_y == HEIGHT) {

enemy_ship_y = 0;

}

}

void move_bullet() {

if (bullet_x > 0) {

bullet_x--;

} else {

bullet_x = player_ship_x;

bullet_y = -1;

}

}

void handle_collisions() {

if (bullet_x == enemy_ship_x && bullet_y == enemy_ship_y) {

bullet_x = player_ship_x;

bullet_y = -1;

enemy_ship_x = -1;

enemy_ship_y = -1;

lives--;

}

}

void game_loop() {

srand(time(0));

while (lives > 0) {

draw_game_field();

move_enemy_ship();

move_bullet();

handle_collisions();

if (enemy_ship_x != -1 && enemy_ship_y != -1) {

draw_game_field();

char input = getchar();

if (input == 'a') {

if (player_ship_x > 0) {

player_ship_x--;

}

} else if (input == 'd') {

if (player_ship_x < WIDTH - 1) {

player_ship_x++;

}

} else if (input == 'w') {

bullet_y = player_ship_x;

bullet_x = player_ship_x;

}

}

}

}

int main() {

game_loop();

printf("Game Over\n");

return 0;

}

相关推荐
忆杰30 分钟前
统计用户本月的连续登录天数
开发语言·python
蓝胖子不会敲代码41 分钟前
跟着AI学习C# Day26
开发语言·学习·c#
嗜好ya1 小时前
JAVA集合篇--深入理解ConcurrentHashMap图解版
java·开发语言
小猫咪怎么会有坏心思呢1 小时前
华为OD机考-生成哈夫曼树-二叉树(JAVA 2025B卷)
java·开发语言·华为od
卜及中1 小时前
【Python】数据处理工具:Pandas详细指南
开发语言·python·学习·pandas
dd向上1 小时前
聊聊GPIO 工作模式
c语言·c++·单片机·嵌入式硬件
翱翔的小菜鸟2 小时前
Java Stream API中peek()方法使用不当引发的生产问题
java·开发语言
狐凄2 小时前
Python实例题:基于联邦学习的隐私保护 AI 系统(分布式学习、隐私计算)
开发语言·python
NLxxxxX2 小时前
爬虫获取数据:selenium的应用
开发语言·爬虫·python·selenium·测试工具·numpy·pandas
威桑3 小时前
在 Windows 和 Linux 下使用 C/C++ 连接 MySQL 的详细指南
linux·c语言·windows