溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言如何實現(xiàn)飛機大戰(zhàn)

發(fā)布時間:2022-06-08 10:38:48 來源:億速云 閱讀:131 作者:iii 欄目:開發(fā)技術

本文小編為大家詳細介紹“C語言如何實現(xiàn)飛機大戰(zhàn)”,內(nèi)容詳細,步驟清晰,細節(jié)處理妥當,希望這篇“C語言如何實現(xiàn)飛機大戰(zhàn)”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

具體代碼如下

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<Windows.h>

int score = 0;
int plane_col, plane_row;//·é?ú????
int bullet_col,bullet_row;//×óμˉμ?????
int area_height, area_width;//ó??·??óò  0-n-1
int enemy_col, enemy_row;
int enemy_vh, enemy_vv;
int a[100][100] = { 0 };

void gotoxy(int x, int y) {//?¢D? 
    HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD pos;
    pos.X = x;
    pos.Y = y;
    SetConsoleCursorPosition(handle, pos);
}
void HideCursor() {
    CONSOLE_CURSOR_INFO cursor_info = { 1,0 };
    SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}

void startup()//3?ê??ˉ 
{
    area_height = 20;
    area_width = 30;

    plane_col = 14;
    plane_row = 10;
    
    bullet_col = 0;
    bullet_row = -1;

    enemy_col = rand() % area_width;
    enemy_row = 0;
    enemy_vh = 0;
    enemy_vv = 1;
}

//int[][] planeArray() {
//    
//    a[plane_col][plane_row] = 1;
//    for (int i = plane_col - 2; i < plane_col + 2; i++)
//        a[i][plane_row + 1] = 1;
//    a[plane_col - 1][plane_row + 2] = 1; a[plane_col + 1][plane_row + 2] = 1;
//
//    return a;
//}

void show()//?e??×?·?é¨?è2¢′òó? 
{
    gotoxy(0, 0);
    int i, j;
    //??ê?
    //system("cls");
    for (i = 0; i < area_height; i++)//DD±éàú
    {
        for (j = 0; j < area_width; j++)//áD±éàú
        {
            if (i == plane_row && j == plane_col)
            {
                printf("*");
            }
            else if (i == bullet_row && j == bullet_col)
                printf("|");
            else if (i == enemy_row && j == enemy_col)
                printf("@");
            else printf(" ");
        }
        printf("\n");
    }
    printf("score:%d\n",score);
}
void updateWithInput()//???¥£?????·é?úò??ˉ£?é??÷
{ 
    char input;
    //μè′yó??§μ?ê?è?£????¥
    if (kbhit()) {
        input = getch();
        switch (input)
        {
        case 'w':
            if(plane_row != 0)
            plane_row--; break;
        case 'a':
            if(plane_col != 0)
            plane_col--; break;
        case 'd':
            if(plane_col != area_width)
            plane_col++; break;
        case 's':
            if(plane_row != area_height)
            plane_row++; break;
        case ' ':
            if (bullet_row < 0)//?á??à???óD×óμˉ
            {
                bullet_row = plane_row - 1;
                bullet_col = plane_col;
            }
            break;
        default:
            break;
        }
    }
}

int IsCrash() {
    //?D???ò·?·é?úê?·?×1?ù 
    if (enemy_col == plane_col && enemy_row == plane_row) {
        return 1;
    }
    return 0;
}

void updateWithourInput()//×óμˉò??ˉó?μDè?ò??ˉ 
{
    //?üD?
    bullet_row--;
    static int count = 0;
    count ++;
    if (count == 40) {
        enemy_row += enemy_vv;
        enemy_col += enemy_vh;
        count = 0;
    }
    
}

void crack() {//?÷?ùμDè? 

    if(enemy_row > area_height){
        bullet_row = -1;
        enemy_row = -1;
        enemy_col = rand() % area_height;
    }
    else if (bullet_col == enemy_col && bullet_row == enemy_row) {
        score += 10;
        bullet_row = -1;
        enemy_row = -1;
        enemy_col = rand() % area_height;
    }

}

int IsFinish() {//ó??·ê?·??áê? 
    if (score == 100) {
        system("cls");
        printf("congretulations!!!");
        score = 0;
        _sleep(500);//?è?Yí£?ú??êμ·?o?è?D??ˉ 
        system("pause");
        return 1;
    }
    else if (IsCrash() == 1) {
        system("cls");
        printf("you have lost!!!");
        score = 0;
        _sleep(500);
        system("pause");
        return 1;
    }          
    
    return 0;
}

int main()
{
    HideCursor();
    startup();
    while (1)
    {
        show();
        updateWithInput();
        updateWithourInput();
        crack();
        if(IsFinish()==1){
            startup();
            continue;
        }
    }
    return 0;
}

讀到這里,這篇“C語言如何實現(xiàn)飛機大戰(zhàn)”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內(nèi)容的文章,歡迎關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI