飞机大战(游戏框架) v0.1
2025-08-21 22:05:39
发布于:上海
主代码:
#include <iostream>
#include <windows.h>
#include "cppgame.h"
using namespace std;
string plane[9] = {" /\\\n"," / \\\n"," | |\n"," / \\\n"," / \\\n"," |_____|\n"," | |\n"," \\ /\n"," |\n"};
int x = 50,score,health = 100,key_left = 'A',key_right = 'D';
void settings(){
int choice = 1;
system("cls");
cout << "设置\n\n> 向左移动:" << (char)key_left << "\n 向右移动:" << (char)key_right << "\n 界面底色:绿\n 界面字体颜色:黑\n关闭本页面(Esc键)";
while(!press(VK_ESCAPE)){
if(press(VK_DOWN) && choice < 4){
choice++;
system("cls");
if(choice == 1){
cout << "设置\n\n> 向左移动:" << (char)key_left << "\n 向右移动:" << (char)key_right << "\n 界面底色:绿\n 界面字体颜色:黑\n关闭本页面(Esc键)";
}else if(choice == 2){
cout << "设置\n\n 向左移动:" << (char)key_left << "\n> 向右移动:" << (char)key_right << "\n 界面底色:绿\n 界面字体颜色:黑\n关闭本页面(Esc键)";
}else if(choice == 3){
cout << "设置\n\n 向左移动:" << (char)key_left << "\n 向右移动:" << (char)key_right << "\n> 界面底色:绿\n 界面字体颜色:黑\n关闭本页面(Esc键)";
}else if(choice == 4){
cout << "设置\n\n 向左移动:" << (char)key_left << "\n 向右移动:" << (char)key_right << "\n 界面底色:绿\n> 界面字体颜色:黑\n关闭本页面(Esc键)";
}
}if(press(VK_UP) && choice > 1){
choice--;
system("cls");
if(choice == 1){
cout << "设置\n\n> 向左移动:" << (char)key_left << "\n 向右移动:" << (char)key_right << "\n 界面底色:绿\n 界面字体颜色:黑\n关闭本页面(Esc键)";
}else if(choice == 2){
cout << "设置\n\n 向左移动:" << (char)key_left << "\n> 向右移动:" << (char)key_right << "\n 界面底色:绿\n 界面字体颜色:黑\n关闭本页面(Esc键)";
}else if(choice == 3){
cout << "设置\n\n 向左移动:" << (char)key_left << "\n 向右移动:" << (char)key_right << "\n> 界面底色:绿\n 界面字体颜色:黑\n关闭本页面(Esc键)";
}else if(choice == 4){
cout << "设置\n\n 向左移动:" << (char)key_left << "\n 向右移动:" << (char)key_right << "\n 界面底色:绿\n> 界面字体颜色:黑\n关闭本页面(Esc键)";
}
}if(press(VK_RETURN)){
if(choice == 1){
key_left = press_all_key();
system("cls");
cout << "设置\n\n> 向左移动:" << (char)key_left << "\n 向右移动:" << (char)key_right << "\n 界面底色:绿\n 界面字体颜色:黑\n关闭本页面(Esc键)";
}else if(choice == 2){
key_right = press_all_key();
system("cls");
cout << "设置\n\n 向左移动:" << (char)key_left << "\n> 向右移动:" << (char)key_right << "\n 界面底色:绿\n 界面字体颜色:黑\n关闭本页面(Esc键)";
}
}sleep(0.05);
}
}void game_map(){
system("cls");
cout << "分数:" << score << "\n血量:" << health << "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n";
for(int i = 0;i < 9;i++){
for(int j = 0;j < x;j++){
cout << " ";
}cout << plane[i];
}
}void game_behaviour(){
while(1){
if(press(key_left) && x >= 1){
x -= 2;
game_map();
}if(press(key_right)){
x += 2;
game_map();
}if(press(VK_ESCAPE)){
system("cls");
system("color A0");
cout << "游戏菜单\n\n分数:" << score << "\n血量:" << health << "\n设置(S键)\n退出游戏(Enter键)\n关闭本页面(BackSpace键)";
while(!press(VK_BACK)){
if(press(VK_RETURN)){
return;
}if(press('S')){
settings();
system("cls");
system("color A0");
cout << "游戏菜单\n\n分数:" << score << "\n血量:" << health << "\n设置(S键)\n退出游戏(Enter键)\n关闭本页面(BackSpace键)";
}sleep(0.05);
}game_map();
system("color 9F");
}
}
}int main(){
SetConsoleTitle("飞机大战");
system("color 9F");
game_map();
game_behaviour();
return 0;
}
自制头文件:
#include <windows.h>
bool press(int vk){
return GetAsyncKeyState(vk) & 0x8000;
}void beep(int g){
Beep(g,g);
return;
}void sleep(double time){
time *= 1000;
Sleep(time);
}int press_all_key(){
while(1){
if (press('A')){
return 'A';
}if (press('B')){
return 'B';
}if (press('C')){
return 'C';
}if (press('D')){
return 'D';
}if (press('E')){
return 'E';
}if (press('F')){
return 'F';
}if (press('G')){
return 'G';
}if (press('H')){
return 'H';
}if (press('I')){
return 'I';
}if (press('J')){
return 'J';
}if (press('K')){
return 'K';
}if (press('L')){
return 'L';
}if (press('M')){
return 'M';
}if (press('N')){
return 'N';
}if (press('O')){
return 'O';
}if (press('P')){
return 'P';
}if (press('Q')){
return 'Q';
}if (press('R')){
return 'R';
}if (press('S')){
return 'S';
}if (press('T')){
return 'T';
}if (press('U')){
return 'U';
}if (press('V')){
return 'V';
}if (press('W')){
return 'W';
}if (press('X')){
return 'X';
}if (press('Y')){
return 'Y';
}if (press('Z')){
return 'Z';
}if (press(VK_F1)){
return VK_F1;
}if (press(VK_F2)){
return VK_F2;
}if (press(VK_F3)){
return VK_F3;
}if (press(VK_F4)){
return VK_F4;
}if (press(VK_F5)){
return VK_F5;
}if (press(VK_F6)){
return VK_F6;
}if (press(VK_F7)){
return VK_F7;
}if (press(VK_F8)){
return VK_F8;
}if (press(VK_F9)){
return VK_F9;
}if (press(VK_F10)){
return VK_F10;
}if (press(VK_F11)){
return VK_F11;
}if (press(VK_F12)){
return VK_F12;
}if (press(VK_LCONTROL)){
return VK_LCONTROL;
}if (press(VK_RCONTROL)){
return VK_RCONTROL;
}if (press(VK_LMENU)){
return VK_LMENU;
}if (press(VK_RMENU)){
return VK_RMENU;
}if (press(VK_LSHIFT)){
return VK_LSHIFT;
}if (press(VK_RSHIFT)){
return VK_RSHIFT;
}if (press(VK_TAB)){
return VK_TAB;
}if (press(' ')){
return ' ';
}if (press('1')){
return '1';
}if (press('2')){
return '2';
}if (press('3')){
return '3';
}if (press('4')){
return '4';
}if (press('5')){
return '5';
}if (press('6')){
return '6';
}if (press('7')){
return '7';
}if (press('8')){
return '8';
}if (press('9')){
return '9';
}if (press('0')){
return '0';
}if (press(VK_UP)){
return VK_UP;
}if (press(VK_DOWN)){
return VK_DOWN;
}if (press(VK_LEFT)){
return VK_LEFT;
}if (press(VK_RIGHT)){
return VK_RIGHT;
}if (press(VK_DELETE)){
return VK_DELETE;
}if (press(VK_INSERT)){
return VK_INSERT;
}if (press(VK_END)){
return VK_END;
}if (press(VK_HOME)){
return VK_HOME;
}if (press(VK_SNAPSHOT)){
return VK_SNAPSHOT;
}if (press(VK_OEM_1)){
return VK_OEM_1;
}if (press(VK_OEM_2)){
return VK_OEM_2;
}if (press(VK_OEM_3)){
return VK_OEM_3;
}if (press(VK_OEM_4)){
return VK_OEM_4;
}if (press(VK_OEM_5)){
return VK_OEM_5;
}if (press(VK_OEM_6)){
return VK_OEM_6;
}if (press(VK_OEM_7)){
return VK_OEM_7;
}if (press(VK_OEM_MINUS)){
return VK_OEM_MINUS;
}if (press(VK_OEM_PLUS)){
return VK_OEM_PLUS;
}if (press(VK_OEM_COMMA)){
return VK_OEM_COMMA;
}if (press(VK_OEM_PERIOD)){
return VK_OEM_PERIOD;
}if (press(VK_PRIOR)){
return VK_PRIOR;
}if (press(VK_NEXT)){
return VK_NEXT;
}if (press(VK_CAPITAL)){
return VK_CAPITAL;
}Sleep(10);
}
}
这里空空如也
有帮助,赞一个