1. 程式人生 > 其它 >雙手奉上!一個好玩的小遊戲(純C語言編寫)!

雙手奉上!一個好玩的小遊戲(純C語言編寫)!

效果演示


原始碼

#include<stdio.h>

#include<string.h>

#include<conio.h>

#include<windows.h>

#include<stdlib.h>

#define MAX 100

long long int speed = 0;//控制敵機的速度

int position_x, position_y;//飛機的所在位置

int high, width;//地圖的大小

int bullet_x, bullet_y;//子彈的位置

int enemy_x, enemy_y;//
敵人的位置 int map[MAX][MAX]; /*0表示空白,1表示戰機*的區域,2表示敵人戰機的位置。 3表示上下圍牆,4表示左右圍牆,5表示子彈的位置*/ int score; void starup()//初始化所有的資訊 { high = 20; width = 30; position_x = high / 2; position_y = width / 2; bullet_x = 0; bullet_y = position_y; enemy_x = 2; enemy_y = position_y - 1; score
= 0; } void startMap() { int i, j; for (i = 1; i <= high - 1; i++) { map[i][1] = 4; for (j = 2; j <= width - 1; j++) map[i][j] = 0; map[i][width] = 4; } //下方圍牆的初始化 i = high; for (j = 1; j <= width; j++) map[i][j]
= 3; map[bullet_x][bullet_y] = 5; /*這裡是戰機大小的初始化開始*/ map[position_x - 1][position_y] = 1; i = position_x; for (j = position_y - 2; j <= position_y + 2; j++) map[i][j] = 1; map[position_x + 1][position_y - 1] = 1; map[position_x + 1][position_y + 1] = 1; /*** 初始化結束 **/ /* 敵人戰機的初始化 */ map[enemy_x][enemy_y] = 2; map[enemy_x - 1][enemy_y - 1] = 2; map[enemy_x - 1][enemy_y + 1] = 2; /* 敵人戰機初始化結束*/ } void HideCursor()//隱藏游標 { CONSOLE_CURSOR_INFO cursor_info = { 1, 0 }; SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info); } void gotoxy(int x, int y)//清理一部分螢幕 { HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); COORD pos; pos.X = x; pos.Y = y; SetConsoleCursorPosition(handle, pos); } void updateWithoutInput()//於輸入無關的跟新 { if (bullet_x > 0) bullet_x--; if ((bullet_x == enemy_x) && (bullet_y == enemy_y))//當敵人的飛機被擊中時 { score++; enemy_x = 0; enemy_y = rand() % width; bullet_x = 0; } if (enemy_x > high)//當飛機超出區域 { enemy_x = 0; enemy_y = rand() % width; } if (speed == 1) for (int i = 1; i <= 10000; i++)//用來控制敵機的速度 { for (int j = 1; j <= 3000; j++) { speed = 1; } } speed = 0; if (speed == 0) { enemy_x++; speed = 1; } } void updateWithInput()//與輸入有關的更新 { char input; if (kbhit())//在VC6.0++下,為_kbhit() { input = getch();//在VC6.0++下為_getch(); if (input == 'a') position_y--; if (input == 's') position_x++; if (input == 'd') position_y++; if (input == 'w') position_x--; if (input == ' ') { bullet_x = position_x - 1; bullet_y = position_y; } } } void show()//展示的內容 { gotoxy(0, 0); int i, j; for (i = 1; i <= high; i++) { for (j = 1; j <= width; j++) { if (map[i][j] == 0) printf(" "); if (map[i][j] == 1) printf("*"); if (map[i][j] == 2) printf("#"); if (map[i][j] == 3) printf("~"); if (map[i][j] == 4) printf("|"); if (map[i][j] == 5) printf("|"); } printf("\n"); } printf("\n你的得分:%d\n\n", score); printf("操作說明: ASDW分別操作 左下右上四個的移動\n"); printf("**空格是發出子彈**\n"); } int main() { starup(); while (1) { HideCursor(); startMap(); show(); updateWithoutInput(); updateWithInput(); } return 0; }

—————————————

關注我,參觀更多原始碼專案!

- End -

—————————————

不管你是轉行也好,初學也罷,進階也可,如果你想學程式設計,進階程式設計師~

【值得關注】我的編 程 學 習 交 流 俱 樂 部!【點選進入】

C語言入門資料(網盤連結免費分享):


C語言推薦書籍(PDF免費分享):