본문 바로가기
카테고리 없음

C언어로 만든 간단한 슈팅게임 (+ 소스 코드)

by kangs' tong 2023. 8. 13.

간단한 슈팅게임 소개

안녕하세요! 이번 포스팅에서는 C언어로 만든 간단한 슈팅게임에 대해 소개해 드리겠습니다. 이 게임은 플레이어가 총알을 발사하여 목표물을 제거하는 간단한 게임입니다. 이 게임은 C언어로 구현되었으며, 소스 코드도 함께 제공될 예정입니다. 그럼 시작해볼까요?

게임의 기능

  1. 플레이어의 이동: 플레이어는 상하좌우로 이동할 수 있습니다. 키보드의 방향키를 사용하여 원하는 방향으로 이동할 수 있습니다.
  2. 총알 발사: 플레이어는 스페이스바를 눌러 총알을 발사할 수 있습니다. 총알은 일정한 속도로 직선으로 발사되며, 목표물에 닿으면 제거됩니다.
  3. 목표물의 생성: 게임 시작 시 일정한 시간 간격으로 목표물이 생성됩니다. 목표물은 게임 화면의 상단에서 출발하여 아래로 내려가는 형태로 이동합니다.
  4. 점수 계산: 목표물을 총알로 제거하면 플레이어의 점수가 증가합니다. 또한, 목표물이 게임 화면의 하단까지 도달하면 점수가 감소합니다.

게임 소스 코드

#include <stdio.h>
#include <conio.h>
#include <windows.h>

#define SCREEN_WIDTH 80
#define SCREEN_HEIGHT 25
#define PLAYER_START_X 40
#define PLAYER_START_Y 23
#define BULLET_SPEED 5
#define ENEMY_SPEED 2
#define ENEMY_SPAWN_INTERVAL 1000

int playerX, playerY;
int bulletX, bulletY;
int enemyX, enemyY;
int score;

void gotoxy(int x, int y) {
    COORD coord = {x, y};
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}

void drawPlayer() {
    gotoxy(playerX, playerY);
    printf("A");
}

void erasePlayer() {
    gotoxy(playerX, playerY);
    printf(" ");
}

void drawBullet() {
    gotoxy(bulletX, bulletY);
    printf("|");
}

void eraseBullet() {
    gotoxy(bulletX, bulletY);
    printf(" ");
}

void drawEnemy() {
    gotoxy(enemyX, enemyY);
    printf("V");
}

void eraseEnemy() {
    gotoxy(enemyX, enemyY);
    printf(" ");
}

void moveBullet() {
    eraseBullet();
    bulletY -= BULLET_SPEED;
    if (bulletY < 0) {
        bulletY = -1;
    }
    drawBullet();
}

void moveEnemy() {
    eraseEnemy();
    enemyY += ENEMY_SPEED;
    if (enemyY >= SCREEN_HEIGHT) {
        enemyY = -1;
        score--;
        gotoxy(0, 0);
        printf("Score: %d", score);
    }
    drawEnemy();
}

int collisionCheck() {
    if (bulletX == enemyX && bulletY == enemyY) {
        score++;
        gotoxy(0, 0);
        printf("Score: %d", score);
        return 1;
    }
    return 0;
}

int main() {
    playerX = PLAYER_START_X;
    playerY = PLAYER_START_Y;
    bulletX = playerX;
    bulletY = playerY - 1;
    enemyX = 0;
    enemyY = -1;
    score = 0;

    int tick = 0;

    while (1) {
        if (kbhit()) {
            char key = getch();
            if (key == 'a' && playerX > 0) {
                erasePlayer();
                playerX--;
                drawPlayer();
            } else if (key == 'd' && playerX < SCREEN_WIDTH - 1) {
                erasePlayer();
                playerX++;
                drawPlayer();
            } else if (key == 'w' && bulletY == playerY - 1) {
                bulletX = playerX;
                bulletY = playerY - 1;
            }
        }
        if (tick % ENEMY_SPAWN_INTERVAL == 0) {
            enemyX = rand() % SCREEN_WIDTH;
            enemyY = 0;
        }

        moveBullet();
        moveEnemy();

        if (collisionCheck()) {
            eraseBullet();
            bulletY = -1;
        }

        tick++;
        Sleep(10);
    }

    return 0;
}

전체 내용 정리

이번 포스팅에서는 C언어로 간단한 슈팅게임을 소개하였습니다. 게임은 플레이어의 이동, 총알 발사, 목표물의 생성, 점수 계산 등의 기능을 포함하고 있습니다. 소스 코드를 통해 게임의 구현 방법을 확인하실 수 있으며, 각 함수의 역할과 게임의 룰을 쉽게 이해하실 수 있을 것입니다. 이 게임을 기반으로 보다 복잡하고 흥미로운 슈팅게임을 개발해 보시는 것을 추천드리며, 여러분의 창의력을 발휘하여 멋진 게임을 만들어 보시기 바랍니다. 즐거운 게임 개발되세요!

댓글