帮我写个植物大战僵尸的C语言游戏
以下是一个简单的植物大战僵尸游戏的C语言代码示例:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <conio.h>
#include <windows.h>
#define ROWS 5
#define COLS 9
typedef struct {
int x;
int y;
int life;
} Plant;
typedef struct {
int x;
int y;
int life;
} Zombie;
Plant plants[ROWS][COLS];
Zombie zombies[ROWS][COLS];
void initialize() {
// 初始化植物和僵尸
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
plants[i][j].x = i;
plants[i][j].y = j;
plants[i][j].life = 3;
zombies[i][j].x = i;
zombies[i][j].y = j;
zombies[i][j].life = 3;
}
}
}
void draw() {
// 绘制游戏画面
system("cls");
printf("植物大战僵尸\n");
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
if (plants[i][j].life > 0) {
printf("P ");
} else if (zombies[i][j].life > 0) {
printf("Z ");
} else {
printf(". ");
}
}
printf("\n");
}
}
void update() {
// 更新游戏状态
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
if (plants[i][j].life > 0 && zombies[i][j].life > 0) {
// 植物和僵尸都存活,互相攻击
zombies[i][j].life--;
plants[i][j].life--;
} else if (plants[i][j].life <= 0 && zombies[i][j].life > 0) {
// 植物死亡,僵尸存活,僵尸前进
if (j > 0) {
zombies[i][j - 1] = zombies[i][j];
zombies[i][j].life = 0;
} else {
zombies[i][j].life = 0;
}
} else if (plants[i][j].life > 0 && zombies[i][j].life <= 0) {
// 植物存活,僵尸死亡
plants[i][j].life--;
}
}
}
}
bool isGameOver() {
// 判断游戏是否结束
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
if (plants[i][j].life > 0 && zombies[i][j].life > 0) {
// 存在植物和僵尸都存活的位置,游戏未结束
return false;
}
}
}
return true;
}
int main() {
initialize();
while (!isGameOver()) {
draw();
update();
Sleep(1000); // 控制游戏速度
}
printf("游戏结束\n");
return 0;
}
请注意,此代码仅为示例,可能并不完整或最优。您可以根据自己的需求进行修改和扩展,以创建更完整的植物大战僵尸游戏
原文地址: https://www.cveoy.top/t/topic/hzNN 著作权归作者所有。请勿转载和采集!