在C语言中飞机游戏如何统计和显示击中得分
时间: 2024-03-06 22:48:14 浏览: 14
在C语言中,您可以使用变量来记录得分。每当玩家成功击中敌机时,您可以通过增加得分变量的值来增加得分。例如:
```
int score = 0; // 定义得分变量并初始化为0
// 玩家成功击中敌机后,增加得分
score += 10; // 假设每次击中敌机得10分
```
为了显示得分,您可以使用printf函数将得分打印出来。例如:
```
printf("得分:%d\n", score);
```
您可以在游戏的适当位置调用该函数,以显示当前得分。
相关问题
c语言双人飞机小游戏代码
以下是一个简单的 C 语言双人飞机小游戏代码:
```c
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#define BOARD_WIDTH 50 // 游戏区域宽度
#define BOARD_HEIGHT 20 // 游戏区域高度
void gotoxy(int x, int y); // 控制光标位置
void hideCursor(); // 隐藏光标
void drawBoard(); // 绘制游戏区域
void drawPlane(int x, int y); // 绘制飞机
void movePlane(int* x, int* y, char direction); // 移动飞机
void shoot(int x, int y); // 发射子弹
void checkHit(int* x, int* y, int* score, int opponentX, int opponentY); // 检查是否被对手击中
void showScore(int score1, int score2); // 显示得分
int main()
{
int x1 = 10, y1 = BOARD_HEIGHT / 2; // 玩家1的飞机位置
int x2 = BOARD_WIDTH - 10, y2 = BOARD_HEIGHT / 2; // 玩家2的飞机位置
int score1 = 0, score2 = 0; // 玩家1和玩家2的得分
hideCursor(); // 隐藏光标
drawBoard(); // 绘制游戏区域
drawPlane(x1, y1); // 绘制玩家1的飞机
drawPlane(x2, y2); // 绘制玩家2的飞机
showScore(score1, score2); // 显示得分
// 游戏循环
while (1)
{
if (_kbhit()) // 如果有按键按下
{
char ch = _getch(); // 获取按键
movePlane(&x1, &y1, ch); // 移动玩家1的飞机
movePlane(&x2, &y2, ch); // 移动玩家2的飞机
if (ch == ' ') // 如果按下空格键,则发射子弹
{
shoot(x1, y1); // 玩家1发射子弹
shoot(x2, y2); // 玩家2发射子弹
}
}
// 检查是否被对手击中
checkHit(&x1, &y1, &score1, x2, y2); // 检查玩家1是否被玩家2击中
checkHit(&x2, &y2, &score2, x1, y1); // 检查玩家2是否被玩家1击中
// 显示得分
showScore(score1, score2);
Sleep(50); // 等待一段时间,让游戏留出一些时间处理其他任务
}
return 0;
}
void gotoxy(int x, int y)
{
COORD coord;
coord.X = x;
coord.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
void hideCursor()
{
CONSOLE_CURSOR_INFO cursor_info = { 1, 0 };
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}
void drawBoard()
{
int i, j;
for (i = 0; i < BOARD_HEIGHT; i++)
{
for (j = 0; j < BOARD_WIDTH; j++)
{
if (i == 0 || i == BOARD_HEIGHT - 1 || j == 0 || j == BOARD_WIDTH - 1)
{
gotoxy(j, i);
printf("*");
}
}
}
}
void drawPlane(int x, int y)
{
gotoxy(x, y);
printf(" /\\");
gotoxy(x, y + 1);
printf("/ \\");
gotoxy(x, y + 2);
printf("| ^^ |");
gotoxy(x, y + 3);
printf("\\____/");
}
void movePlane(int* x, int* y, char direction)
{
switch (direction)
{
case 'w': // 向上移动
if (*y > 1) // 飞机不能超出游戏区域
{
gotoxy(*x, *y);
printf(" ");
gotoxy(*x, *y - 1);
printf("| ^^ |");
gotoxy(*x, *y + 3);
printf(" ");
*y = *y - 1;
}
break;
case 's': // 向下移动
if (*y < BOARD_HEIGHT - 4) // 飞机不能超出游戏区域
{
gotoxy(*x, *y);
printf(" ");
gotoxy(*x, *y + 4);
printf("| ^^ |");
gotoxy(*x, *y);
printf("\\____/");
*y = *y + 1;
}
break;
case 'a': // 向左移动
if (*x > 1) // 飞机不能超出游戏区域
{
gotoxy(*x, *y);
printf(" ");
gotoxy(*x - 1, *y + 1);
printf("/ \\");
gotoxy(*x - 1, *y + 2);
printf("| ^^ |");
gotoxy(*x - 1, *y + 3);
printf("\\____/");
*x = *x - 1;
}
break;
case 'd': // 向右移动
if (*x < BOARD_WIDTH - 3) // 飞机不能超出游戏区域
{
gotoxy(*x, *y);
printf(" ");
gotoxy(*x + 2, *y + 1);
printf("/ \\");
gotoxy(*x + 2, *y + 2);
printf("| ^^ |");
gotoxy(*x + 2, *y + 3);
printf("\\____/");
*x = *x + 1;
}
break;
}
}
void shoot(int x, int y)
{
gotoxy(x + 2, y - 1);
printf("|");
}
void checkHit(int* x, int* y, int* score, int opponentX, int opponentY)
{
if (*x == opponentX && (*y == opponentY || *y == opponentY + 1 || *y == opponentY + 2 || *y == opponentY + 3))
{
(*score)++;
gotoxy(*x, *y);
printf(" ");
gotoxy(*x, *y + 1);
printf(" ");
gotoxy(*x, *y + 2);
printf(" ");
gotoxy(*x, *y + 3);
printf(" ");
*x = 10;
*y = BOARD_HEIGHT / 2;
drawPlane(*x, *y);
}
}
void showScore(int score1, int score2)
{
gotoxy(BOARD_WIDTH / 2 - 5, 0);
printf("Player 1: %d", score1);
gotoxy(BOARD_WIDTH / 2 + 5, 0);
printf("Player 2: %d", score2);
}
```
这个游戏非常简单,只有两个飞机和一些基本的移动和发射子弹的功能。你可以根据自己的需要对其进行修改和扩展。
用c语言写一个飞机大战游戏
好的,下面是一个简单的飞机大战游戏的C语言实现示例:
```c
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <windows.h>
#define WIDTH 40 // 游戏界面宽度
#define HEIGHT 20 // 游戏界面高度
int x, y; // 玩家飞机的位置
int score; // 玩家得分
int enemy_x[5]; // 敌机的位置
int enemy_y[5];
int bullet_x, bullet_y; // 子弹的位置
void gotoxy(int x, int y) // 光标移动函数
{
COORD coord;
coord.X = x;
coord.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
void draw_plane() // 绘制玩家飞机
{
gotoxy(x, y);
printf(" /\\ ");
gotoxy(x, y + 1);
printf(" | | ");
gotoxy(x, y + 2);
printf("/ \\");
}
void draw_enemy() // 绘制敌机
{
for (int i = 0; i < 5; i++) {
if (enemy_y[i] > 0) {
gotoxy(enemy_x[i], enemy_y[i]);
printf(" /--\\ ");
gotoxy(enemy_x[i], enemy_y[i] + 1);
printf("( )");
gotoxy(enemy_x[i], enemy_y[i] + 2);
printf(" \\__/ ");
}
}
}
void draw_bullet() // 绘制子弹
{
gotoxy(bullet_x, bullet_y);
printf("^");
}
int kbhit() // 键盘输入判断函数
{
if (_kbhit()) {
return _getch();
} else {
return -1;
}
}
void init_game() // 游戏初始化函数
{
x = WIDTH / 2;
y = HEIGHT - 3;
score = 0;
for (int i = 0; i < 5; i++) {
enemy_x[i] = rand() % WIDTH;
enemy_y[i] = -1 - i * 4;
}
bullet_x = -1;
bullet_y = -1;
}
void update_game() // 游戏更新函数
{
// 移动玩家飞机
if (kbhit() == 'a' && x > 0) {
x--;
}
if (kbhit() == 'd' && x < WIDTH - 5) {
x++;
}
// 发射子弹
if (kbhit() == ' ') {
bullet_x = x + 2;
bullet_y = y - 1;
}
// 移动子弹
if (bullet_y > 0) {
bullet_y--;
// 检测是否击中敌机
for (int i = 0; i < 5; i++) {
if (bullet_x >= enemy_x[i] && bullet_x <= enemy_x[i] + 5 &&
bullet_y >= enemy_y[i] && bullet_y <= enemy_y[i] + 2) {
enemy_x[i] = rand() % WIDTH;
enemy_y[i] = -1 - i