1.打飞机

#include<iostream>
#include<windows.h>
#include<conio.h>
#include<time.h>
#include<string>
using namespace std;
typedef struct Frame
{COORD position[2];int flag;
}Frame;
void SetPos(COORD a)
{HANDLE out=GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleCursorPosition(out, a);
}
void SetPos(int i, int j)
{COORD pos={i, j};SetPos(pos);
}
void HideCursor()
{CONSOLE_CURSOR_INFO cursor_info = {1, 0}; SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}//把第y行,[x1, x2) 之间的坐标填充为 ch
void drawRow(int y, int x1, int x2, char ch)
{SetPos(x1,y);for(int i = 0; i <= (x2-x1); i++) cout<<ch;
}//在a, b 纵坐标相同的前提下,把坐标 [a, b] 之间填充为 ch
void drawRow(COORD a, COORD b, char ch)
{if(a.Y == b.Y) drawRow(a.Y, a.X, b.X, ch);else {SetPos(0, 25);cout<<"error code 01:无法填充行,因为两个坐标的纵坐标(x)不相等";system("pause");}
}//把第x列,[y1, y2] 之间的坐标填充为 ch
void drawCol(int x, int y1, int y2, char ch)
{int y=y1;while(y!=y2+1) {SetPos(x, y);cout<<ch;y++;}
}//在a, b 横坐标相同的前提下,把坐标 [a, b] 之间填充为 ch
void drawCol(COORD a, COORD b, char ch)
{if(a.X == b.X) drawCol(a.X, a.Y, b.Y, ch);else {SetPos(0, 25);cout<<"error code 02:无法填充列,因为两个坐标的横坐标(y)不相等";system("pause");}
}//左上角坐标、右下角坐标、用row填充行、用col填充列
void drawFrame(COORD a, COORD  b, char row, char col)
{drawRow(a.Y, a.X+1, b.X-1, row);drawRow(b.Y, a.X+1, b.X-1, row);drawCol(a.X, a.Y+1, b.Y-1, col);drawCol(b.X, a.Y+1, b.Y-1, col);
}void drawFrame(int x1, int y1, int x2, int y2, char row, char col)
{COORD a={x1, y1};COORD b={x2, y2};drawFrame(a, b, row, col);
}void drawFrame(Frame frame, char row, char col)
{COORD a = frame.position[0];COORD b = frame.position[1];drawFrame(a, b, row, col);
}void drawPlaying()
{drawFrame(0, 0, 48, 24, '=', '|');//    draw map frame;drawFrame(49, 0, 79, 4, '-', '|');//        draw output framedrawFrame(49, 4, 79, 9, '-', '|');//        draw score framedrawFrame(49, 9, 79, 20, '-', '|');//   draw operate framedrawFrame(49, 20, 79, 24, '-', '|');//  draw other message frameSetPos(52, 6);cout<<"得分:";SetPos(52, 7);cout<<"称号:";SetPos(52,10);cout<<"操作方式:";SetPos(52,12);cout<<"  a,s,d,w 控制战机移动。";SetPos(52,14);cout<<"  p 暂停游戏。";SetPos(52,16);cout<<"  e 退出游戏。";
}//在[a, b)之间产生一个随机整数
int random(int a, int b)
{int c=(rand() % (a-b))+ a;return c;
}//在两个坐标包括的矩形框内随机产生一个坐标
COORD random(COORD a, COORD b)
{int x=random(a.X, b.X);int y=random(a.Y, b.Y);COORD c={x, y};return c;
}bool  judgeCoordInFrame(Frame frame, COORD spot)
{if(spot.X>=frame.position[0].X)if(spot.X<=frame.position[1].X)if(spot.Y>=frame.position[0].Y)if(spot.Y<=frame.position[0].Y)return true;return false;
}void printCoord(COORD a)
{cout    <<"( "<<a.X<<" , "<<a.Y<<" )";
}void printFrameCoord(Frame a)
{printCoord(a.position[0]);cout    <<" - ";printCoord(a.position[1]);
}int drawMenu()
{SetPos(30, 1);cout<<"P l a n e  W a r";drawRow(3, 0, 79, '-');drawRow(5, 0, 79, '-');SetPos(28, 4);cout<<"w 和 s 选择, k 确定";SetPos(15, 11);cout<<"1. 简单的敌人";SetPos(15, 13);cout<<"2. 冷酷的敌人";drawRow(20, 0, 79, '-');drawRow(22, 0, 79, '-');SetPos(47, 11);cout<<"简单的敌人:";SetPos(51, 13);cout<<"简单敌人有着较慢的移动速度。";int j=11;cout<<">>";while(1) {if( _kbhit() ) {    char x=_getch();switch (x) {case 'w' : {  if( j == 13) {SetPos(12, j);cout<<" ";j = 11;SetPos(12, j);cout<<">>";SetPos(51, 13);cout<<"            ";SetPos(47, 11);cout<<"简单的敌人:";SetPos(51, 13);cout<<"简单敌人有着较慢的移动速度。";}break;}case 's' : {  if( j == 11 ) {SetPos(12, j);cout<<" ";        j = 13;SetPos(12, j);cout<<">>";SetPos(51, 13);cout<<"              ";SetPos(47, 11);cout<<"冷酷的敌人:";SetPos(51, 13);cout<<"冷酷的敌人移动速度较快。";}break;}case 'k' : {  if (j == 8) return 1; else return 2;}}}}
}
/*================== the Game Class ==================*/class Game
{public:COORD position[10];COORD bullet[10];Frame enemy[8];int score;int rank;int rankf;string title;int flag_rank;Game ();//初始化所有void initPlane();void initBullet();void initEnemy();//初始化其中一个//void initThisBullet( COORD );//void initThisEnemy( Frame );void planeMove(char);void bulletMove();void enemyMove();//填充所有void drawPlane();void drawPlaneToNull();void drawBullet();void drawBulletToNull();void drawEnemy();void drawEnemyToNull();//填充其中一个void drawThisBulletToNull( COORD );void drawThisEnemyToNull( Frame );void Pause();void Playing();void judgePlane();void judgeEnemy();void Shoot();void GameOver();void printScore();
};Game::Game()
{initPlane();initBullet();initEnemy();score = 0;rank = 25;rankf = 0;flag_rank = 0;
}void Game::initPlane()
{COORD centren={39, 22};position[0].X=position[5].X=position[7].X=position[9].X=centren.X;position[1].X=centren.X-2;  position[2].X=position[6].X=centren.X-1;position[3].X=position[8].X=centren.X+1;position[4].X=centren.X+2;for(int i=0; i<=4; i++)position[i].Y=centren.Y;for(int i=6; i<=8; i++)position[i].Y=centren.Y+1;position[5].Y=centren.Y-1;position[9].Y=centren.Y-2;
}void Game::drawPlane()
{for(int i=0; i<9; i++){SetPos(position[i]);if(i!=5)cout<<"O";else if(i==5)cout<<"|";      }
}void Game::drawPlaneToNull()
{for(int i=0; i<9; i++){SetPos(position[i]);cout<<" ";}
}void Game::initBullet()
{for(int i=0; i<10; i++)bullet[i].Y = 30;
}void Game::drawBullet()
{for(int i=0; i<10; i++){if( bullet[i].Y != 30){SetPos(bullet[i]);cout<<"^";  }}
}void Game::drawBulletToNull()
{for(int i=0; i<10; i++)if( bullet[i].Y != 30 ){COORD pos={bullet[i].X, bullet[i].Y+1};SetPos(pos);cout<<" ";}
}void Game::initEnemy()
{COORD a={1, 1};COORD b={45, 15};for(int i=0; i<8; i++){enemy[i].position[0] = random(a, b);enemy[i].position[1].X = enemy[i].position[0].X + 3;enemy[i].position[1].Y = enemy[i].position[0].Y + 2;}
}void Game::drawEnemy()
{for(int i=0; i<8; i++)drawFrame(enemy[i].position[0], enemy[i].position[1], '-', '|');
}void Game::drawEnemyToNull()
{for(int i=0; i<8; i++){drawFrame(enemy[i].position[0], enemy[i].position[1], ' ', ' ');}
}void Game::Pause()
{SetPos(61,2);cout<<"               ";SetPos(61,2);cout<<"暂停中...";char c=_getch();while(c!='p')c=_getch();SetPos(61,2);cout<<"         ";
}void Game::planeMove(char x)
{if(x == 'a')if(position[1].X != 1)for(int i=0; i<=9; i++)position[i].X -= 2;if(x == 's')if(position[7].Y != 23)for(int i=0; i<=9; i++)position[i].Y += 1;if(x == 'd')if(position[4].X != 47)for(int i=0; i<=9; i++)position[i].X += 2;if(x == 'w')if(position[5].Y != 3)for(int i=0; i<=9; i++)position[i].Y -= 1;
}void Game::bulletMove()
{for(int i=0; i<10; i++){if( bullet[i].Y != 30){bullet[i].Y -= 1;if( bullet[i].Y == 1 ){COORD pos={bullet[i].X, bullet[i].Y+1};drawThisBulletToNull( pos );bullet[i].Y=30;}}}
}void Game::enemyMove()
{for(int i=0; i<8; i++){for(int j=0; j<2; j++)enemy[i].position[j].Y++;if(24 == enemy[i].position[1].Y){COORD a={1, 1};COORD b={45, 3};enemy[i].position[0] = random(a, b);enemy[i].position[1].X = enemy[i].position[0].X + 3;enemy[i].position[1].Y = enemy[i].position[0].Y + 2;}}
}void Game::judgePlane()
{for(int i = 0; i < 8; i++)for(int j=0; j<9; j++)if(judgeCoordInFrame(enemy[i], position[j])){SetPos(62, 1);cout<<"坠毁";drawFrame(enemy[i], '+', '+');Sleep(1000);GameOver();break;}
}void Game::drawThisBulletToNull( COORD c)
{SetPos(c);cout<<" ";
}void Game::drawThisEnemyToNull( Frame f )
{drawFrame(f, ' ', ' ');
}void Game::judgeEnemy()
{for(int i = 0; i < 8; i++)for(int j = 0; j < 10; j++)if( judgeCoordInFrame(enemy[i], bullet[j]) ){score += 5;drawThisEnemyToNull( enemy[i] );COORD a={1, 1};COORD b={45, 3};enemy[i].position[0] = random(a, b);enemy[i].position[1].X = enemy[i].position[0].X + 3;enemy[i].position[1].Y = enemy[i].position[0].Y + 2;                    drawThisBulletToNull( bullet[j] );bullet[j].Y = 30;}
}void Game::Shoot()
{for(int i=0; i<10; i++)if(bullet[i].Y == 30){bullet[i].X = position[5].X;bullet[i].Y = position[5].Y-1;break;}
}void Game::printScore()
{if(score == 120 && flag_rank == 0){rank -= 3;flag_rank = 1;}else if( score == 360 && flag_rank == 1){rank -= 5;flag_rank = 2;}else if( score == 480 && flag_rank == 2){rank -= 5;flag_rank = 3;}int x=rank/5;SetPos(60, 6);cout<<score;if( rank!=rankf ){SetPos(60, 7);if( x == 5)title="初级飞行员";else if( x == 4)title="中级飞行员";else if( x == 3)title="高级飞行员";else if( x == 2 )title="王牌飞行员";cout<<title;}rankf = rank;
}void Game::Playing()
{//HANDLE MFUN;//MFUN= CreateThread(NULL, 0, MusicFun, NULL, 0, NULL); drawEnemy();drawPlane();int flag_bullet = 0;int flag_enemy = 0;while(1){Sleep(8);if(_kbhit()){char x = _getch();if ('a' == x || 's' == x || 'd' == x || 'w' == x){drawPlaneToNull();planeMove(x);drawPlane();judgePlane();}           else if ('p' == x)Pause();else if( 'k' == x)Shoot();else if( 'e' == x){//CloseHandle(MFUN);GameOver();break;}}/* 处理子弹 */if( 0 == flag_bullet ){bulletMove();drawBulletToNull();drawBullet();judgeEnemy();}           flag_bullet++;if( 5 == flag_bullet )flag_bullet = 0;/* 处理敌人 */if( 0 == flag_enemy ){drawEnemyToNull();enemyMove();            drawEnemy();judgePlane();}flag_enemy++;if( flag_enemy >= rank )flag_enemy = 0;/* 输出得分 */printScore();}
}void Game::GameOver()
{system("cls");              COORD p1={28,9};COORD p2={53,15};drawFrame(p1, p2, '=', '|');SetPos(36,12);string str="Game Over!";for(int i=0; i<str.size(); i++){Sleep(80);cout<<str[i];}Sleep(1000);system("cls");drawFrame(p1, p2, '=', '|');SetPos(31, 11);cout<<"击落敌机:"<<score/5<<" 架";SetPos(31, 12);cout<<"得  分:"<<score;SetPos(31, 13);cout<<"获得称号:"<<title;SetPos(30, 16);Sleep(1000);cout<<"继续? 是(y)| 否(n)";
as:char x=_getch();if (x == 'n')exit(0);else if (x == 'y'){system("cls");Game game;int a = drawMenu();if(a == 2)game.rank = 20;system("cls");drawPlaying();game.Playing();}else goto as;
}/*================== the main function ==================*/
int main()
{//游戏准备srand((int)time(0));    //随机种子HideCursor();   //隐藏光标Game game;int a = drawMenu();if(a == 2)game.rank = 20;system("cls");drawPlaying();game.Playing();
}

2.贪吃蛇游戏

#include <iostream>
#include <list>
#include <cstdio>
#include <string>
#include <vector>
#include <ctime>
#include <algorithm>
#include <conio.h>
#include <windows.h>
using namespace std;
class Node {
public:int x, y;Node(int x1, int y1);
};class UserData {
public:string name;long long score;int gt;int gr; UserData(string s, long long sc,int gametime,int grade); friend bool operator < (UserData a, UserData b);
};#define RIGHT 0x4d
#define LEFT 0x4b
#define UP 0x48
#define DOWN 0x50
#define YELLOW FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY
#define CYAN FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY
#define ORANGE FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY
#define PURPLE FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY
#define RED  FOREGROUND_RED | FOREGROUND_INTENSITY
const int STARTX = 8;
const int STARTY = 4;
const int RANGEX = 60;
const int RANGEY = 20;
int point=10;
const int ENDX = STARTX + RANGEX;
const int ENDY = STARTY + RANGEY;
bool isSnake[RANGEY + 10 ][RANGEX + 10];
int speed;
int sysj;
int gametime;
list<Node> snake;
int curDiraction; //蛇的当前前进方向, 1上, 2下, 3左, 4右
int score; //当前分数
int grade;
int snakeLen; //蛇的长度
int foodx, foody; //食物坐标
int gox, goy; //蛇头坐标
int mj;
void GoTo(short x, short y); //定位光标
void DrawBoard(); //绘制边框
void ShowInformation(); //展示游戏信息
void Init(); //初始化游戏
void RunSnake(int x, int y); //绘制蛇身
void Try(int& x, int& y); //试走
bool IsGoodCoord(int x, int y); //前进坐标是否合法
void AddFood();
void EartFood();
void InitSnake();
bool EndGame();
bool StartGame();
bool GameMenu(); //游戏菜单
void ShowRanking(); //排行榜
void ShowAbout(); //相关信息
void InputData(); //输入玩家名字int main() {while (true) {if (!GameMenu()) return 0;}return 0;
}Node::Node(int x1, int y1) { //构造Node对象x = x1; y = y1;
}int SuiJi()
{srand((unsigned)time(NULL));
return (rand()*rand()+rand()*rand())%14;
}bool operator < (UserData a, UserData b) { //重载运算符,按分数由大到小排列if(a.score != b.score)return a.score > b.score;if(a.gt !=b.gt)return a.gt > b.gt;elsereturn a.gr > b.gr;
}
UserData::UserData(string s, long long sc,int gametime_,int _grade) { //构造UserData对象name = s; score = sc; gt=gametime_; gr=_grade;
}void color(WORD A)
{SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), A);
} void Color(int a)
{switch (a%4){case 0:color(RED);break;case 1:color(CYAN);break;case 2:color(YELLOW);break;case 3:color(PURPLE);break;}
}void GoTo(short x, short y) { //定位光标COORD coord = { x, y };SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}void ShowInformation() { //输出游戏信息color(YELLOW);GoTo(78, 5);printf("贪吃蛇游戏");GoTo(78,18);gametime=(clock()-mj)/1000;grade=snakeLen-3; printf("生存时间:%3d 秒",(clock()-mj)/1000);GoTo(78, 8);printf("游戏规则:");GoTo(78, 10);printf("请按 ↑ ↓ ← →  来控制您的蛇吃东西");GoTo(78, 12);printf("吃的越多,蛇就越长,您的等级也将越高");GoTo(78, 14);printf("当蛇吃到自己或撞上墙时,游戏结束。");GoTo(78,16);printf("自动前进时间:%3dms",speed);GoTo(78, 20);printf("当前等级: %8d", snakeLen-3);GoTo(78, 23);printf("您的分数: %d", score);color(CYAN);printf("+%d=%d",score/3,score*3/2);color(YELLOW);GoTo(78,25);printf("剩余时间:%d秒",20+(snakeLen-3)*5-gametime);sysj=20+(snakeLen-3)*5-gametime;
}void DrawBoard() { //绘制墙体HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); //获得输出句柄CONSOLE_CURSOR_INFO cursor_info = { 1, 0 }; //光标信息SetConsoleCursorInfo(hOut, &cursor_info); //隐藏光标COORD size = { 120, 30 };SetConsoleScreenBufferSize(hOut, size); //重设缓冲区大小SMALL_RECT rc = { 0 , 0, 120, 30 };SetConsoleWindowInfo(hOut, true, &rc); //重设窗口大小SetConsoleTextAttribute(hOut, CYAN);for (int i = STARTX - 2; i <= ENDX + 2; i += 2) { //横向墙体GoTo(i, STARTY - 1);printf("■");GoTo(i, ENDY + 1);printf("■");}for (int i = STARTY - 1; i <= ENDY + 1; ++i) { //竖向墙体GoTo(STARTX - 2, i);printf("■");GoTo(ENDX + 2, i);printf("■");}
}
void draw()
{char m=snakeLen+62;Color(score);cout<<m;}
void Init() { //初始化游戏system("cls");memset(isSnake, 0, sizeof(isSnake));speed = 200;curDiraction = 4;score = 0;DrawBoard();InitSnake();ShowInformation();AddFood();mj=clock();point=20;sysj=20;
}void RunSnake(int x, int y) { //绘制蛇身SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), YELLOW);score += snakeLen + 1;if (x == foodx && y == foody) {EartFood();AddFood();return;}DrawBoard();snake.push_front(Node(x, y));isSnake[y][x] = true;GoTo(x, y);draw();Node back = snake.back();snake.pop_back();isSnake[back.y][back.x] = false;GoTo(back.x, back.y);printf(" ");
}void Try(int& x, int& y) { //试走int key, cnt = 100;while (cnt--) { //多次检测键盘状态if (_kbhit()) {key = getch();switch (key) {case UP:
//                if (curDiraction == 1 || curDiraction == 2) break;--y; curDiraction = 1; return;case DOWN:
//                if (curDiraction == 1 || curDiraction == 2) break;++y; curDiraction = 2; return;case LEFT:
//                if (curDiraction == 3 || curDiraction == 4) break;x -= 2; curDiraction = 3; return;case RIGHT:
//                if (curDiraction == 3 || curDiraction == 4) break;x += 2; curDiraction = 4; return;}}}if (curDiraction == 1) --y; //用户没有输入时else if (curDiraction == 2) ++y;else if (curDiraction == 3) x -= 2;else x += 2;
}bool IsGoodCoord(int x, int y) { //判断光标是否合法if (x <= ENDX && y <= ENDY && x >= STARTX && y >= STARTY)return true;elsereturn false;
}void AddFood() { //增加食物SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), PURPLE);srand((unsigned)time(NULL));while (true) {foodx = (rand()%ENDX) + 1;foody = (rand()%ENDY) + 1;if (foodx&1) foodx++;if (!isSnake[foody][foodx] && IsGoodCoord(foodx, foody)) break;}GoTo(foodx, foody);int a=rand()%5;if(a>=4) printf("★");else if(a<=1) printf("○");elseprintf("▲");
}void EartFood() { //吃东西point+=4;int sb=gametime=(clock()-mj)/1000;sysj=point-sb;score+=score/2;SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), YELLOW);snake.push_front(Node(foodx, foody));isSnake[foody][foodx] = true;++snakeLen;if (speed >= 55) speed -= 5;GoTo(foodx, foody);draw();AddFood();
}void InitSnake() { //初始化蛇身SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), YELLOW);snakeLen = 3, gox = 18, goy = 14;snake.clear();snake.push_front(Node(12, 14));snake.push_front(Node(14, 14));snake.push_front(Node(16, 14));for (int i = 12; i <= 16; i += 2) {GoTo(i, 14);draw();isSnake[14][i] = true;}
}
bool EndGame() { //结束游戏system("cls");DrawBoard();SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), YELLOW);GoTo(28, 10);printf("您的本局游戏得分: %d分", score);GoTo(32, 18);printf("....你挂了....");GoTo(27, 20);printf("是否继续游戏: 是(1), 否(0)");GoTo(27, 22);char key = getch();while (true) {if (key == '1') return false;else if (key == '0') {GoTo(ENDX+1,ENDY+2);exit(0);return true;}else key = getch();}
}bool StartGame() { //启动游戏Init();while (sysj>0) { //开挂RunSnake(gox, goy);ShowInformation();Try(gox, goy);Sleep(speed);}InputData(); return true;
}bool GameMenu() { //游戏菜单system("cls");DrawBoard();GoTo(STARTX + 22, STARTY + 4);SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), YELLOW);printf("欢迎进入贪吃蛇游戏!");GoTo(STARTX + 24, STARTY + 10);printf("1: 新游戏");GoTo(STARTX + 24, STARTY + 12);printf("2: 排行榜");GoTo(STARTX + 24, STARTY + 14);printf("3: 关于游戏");GoTo(STARTX + 24, STARTY + 16);printf("4: 退出游戏");while (true) {if (_kbhit()) {char key = getch();switch (key) {case '1':if (!StartGame()) return false; else return true;case '2':ShowRanking(); return true;case '3':ShowAbout(); return true;case '4':GoTo(1,ENDY+2);return false;default:return true;}}}
}void ShowRanking() { //展示排行榜vector<UserData> vu;FILE *fp = fopen("Gamedata2.txt", "r");if (fp == NULL) fp = fopen("Gamedata2.txt", "w+");char name[20];int len = 0;while (fscanf(fp, "%s", name) != EOF) {++len;int score,g=grade;fscanf(fp, "%d%d%d%*c", &score,&gametime,&g);vu.push_back(UserData(string(name), score,gametime,g));}fclose(fp);sort(vu.begin(), vu.end()); //对得分进行排名system("cls");DrawBoard();SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), CYAN);GoTo(STARTX + 8, STARTY + 2);printf("用户");GoTo(STARTX + 20, STARTY + 2);printf("分数");GoTo(STARTX + 32, STARTY + 2);printf("生存时间");GoTo(STARTX + 44, STARTY + 2);printf("排行");SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), YELLOW);for (int i = 0; i < len && i < 10; ++i) { //打印前十名用户数据char const *p = vu[i].name.c_str();Color(score);GoTo(STARTX + 8, STARTY + 4 + i);printf("%s", p);GoTo(STARTX + 20, STARTY + 4 + i);printf("%d分", vu[i].score);GoTo(STARTX + 32, STARTY + 4 + i);printf("%d秒", vu[i].gt);GoTo(STARTX + 44, STARTY + 4 + i);printf(" %d", i + 1);}GoTo(STARTX + 4, ENDY - 2);printf("-----------------  按'1'返回游戏菜单  ---------------");while (true) {if (_kbhit()) {char key = getch();if (key == '1') break;}}
}void ShowAbout() { //展示游戏相关system("cls");DrawBoard();SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), YELLOW);GoTo(STARTX + 4, STARTY + 2);printf("-------------------  贪吃蛇游戏  -------------------");GoTo(STARTX + 10,STARTY + 8);printf("贪吃蛇游戏");GoTo(STARTX + 10,STARTY + 10);printf("游戏规则:");GoTo(STARTX + 10,STARTY + 12);printf("请按 ↑ ↓ ← →  来控制您的蛇吃东西");GoTo(STARTX + 10,STARTY + 14);printf("吃的越多,蛇就越长,您的等级也将越高");GoTo(STARTX + 10,STARTY + 16);printf("当蛇吃到自己或撞上墙时,游戏结束。");GoTo(STARTX + 4, ENDY - 2);printf("-----------------  按'1'返回游戏菜单  ---------------");while (true) {if (_kbhit()) {char key = getch();if (key == '1') break;}}
}void InputData() { //用户输入名字char name[20];if(score>=1000){GoTo(STARTX + 10, STARTY + 10);SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), RED);printf("请输入你的名字: ");COORD coord = { STARTX + 10, STARTY + 12 };SetConsoleCursorPosition(GetStdHandle(STD_INPUT_HANDLE), coord);while (true) { //忽略非法字符scanf("%s", name);if (name[0] != 0 && name[0] != ' ') break; }FILE *fp = fopen("Gamedata2.txt", "a");if (fp == NULL) fp = fopen("Gamedata2.txt", "w+");fprintf(fp, "%s %d %d \n", name, score,gametime);fclose(fp);}else {GoTo(STARTX + 20, STARTY + 10);cout<<"哟!这分数也能上榜??"<<endl; Sleep(1000);}  EndGame(); }

C++小游戏(第五弹)相关推荐

  1. Python编写微信打飞机小游戏(五)

    如果觉得这篇文章对您有所启发,欢迎关注我的公众号,我会尽可能积极和大家交流,谢谢. Python编写微信打飞机小游戏(一) Python编写微信打飞机小游戏(二) Python编写微信打飞机小游戏(三 ...

  2. Cocos Creator 微信创意小游戏《五子大作战》团队专访

    2019 微信公开课 PRO:首批创意小游戏公布 1 月 9 日,以"同行 WITH US"为主题的微信公开课 PRO 在广州召开.公开课上,讲师孙春光发布了微信首批创意小游戏,包 ...

  3. C++小游戏(第三弹)

    1.猜数 #include<iostream> #include<algorithm> #include<stdlib.h> #include<ctime&g ...

  4. 从零点五开始用Unity做半个2D战棋小游戏(五)

    写在最前 这次想要一个简单且传统的战棋小游戏,大概的玩法是:在2D世界里创建一张由六边形地块组成的战斗地图,敌我双方依据体力在地图上轮流行动并向对方发动攻击,先消灭掉所有敌人的一方将获得胜利. 预计将 ...

  5. Unity发布小游戏(五):小游戏的打包与上传到CCD云服务器

    上一篇介绍了游戏资源的打包配置过程,接下来介绍小游戏的打包和上传部署到CCD云服务器的工程. (1)CCD项目云服务配置:登录UnityCCD云服务后台,地址:Unity ID .创建Endless_ ...

  6. [c++简单小游戏]东搞西搞第二弹——谷歌chrome小恐龙升级版(啊哈)

    上效果图~~~ 灵感来源:谷歌chrome的小恐龙游戏(就是每次断网都会弹出来的那个) 那个#是墙... <是飞弹,移动速度为墙的两倍... 飞弹的走位很像小恐龙里的鸟,但它并不算一个墙...而 ...

  7. C++小游戏(第四弹)

    1.飞机游戏 #include<iostream> #include<windows.h> #include<conio.h> #include<time.h ...

  8. Python小游戏(五)吃豆人小游戏

    python讨论qq群:996113038 代码及相关资源获取: 后台回复"game5"获取源代码. 开发工具: python3.6.4. 需要安装的模块或者库: random模块 ...

  9. 用Unity做半个2D战棋小游戏(五):添加常用的界面

    目标 使用Unity自带的UGUI替换之前的GUI来实现一些常用界面: 1.包含开始战斗按钮及战斗结束时提示文字的主界面. 2.玩家手动操作时,辅助选择移动.攻击及待命的弹出面板. 3.点选地图.战斗 ...

最新文章

  1. ExtJS4.x动态加载js文件
  2. 乐鑫代理启明云端用图文带你一分钟快速了解ESP32-S3的功能特性:支持AI加速,更好的应用于图像、语音等识别,集成Wi-Fi + Bluetooth LE 5.0和高达44 个可编程 GPIO 管脚
  3. html点击按钮弹出窗口_电脑桌面总是弹出广告怎么办?教你2种方法,轻松解决...
  4. C++之函数指针实现函数回调
  5. java入门,学习笔记
  6. Hibernate 添加数据 一 (一对多)
  7. 《JavaScript核心技术》
  8. SQLAlchemy 嵌套事务的解决方案
  9. 电气工程学python_浅谈如何学习电气工程及其自动化专业
  10. Java运行环境下载
  11. [分享]我们团队管理的最佳实践——企业积分制度应该如何建立?
  12. Keil C51 V6.12
  13. 美容院加盟十大品牌到底怎么选
  14. C语言实践——双人五子棋(简易版)
  15. AutoHotKey方向键组合
  16. 游综宅2021最新天下布魔下载渠道 Tenkafu MA下载官网地址
  17. 函数调用计算最高分及对应的学生学号
  18. Resharper使用详解(转)
  19. js 获取当前时间的24小时倒计时
  20. android studio微博对话框,小白的Android studio新浪微博一键分享记录

热门文章

  1. 显卡超频稳定测试软件,显卡超频稳定性测试终极手段
  2. App通过QQ/微信登录绑定用户信息的一般流程
  3. Git搭建私有服务器
  4. 【一键卸载mysql-5.7.38数据库+dos命令bat脚本】
  5. 18天精读掌握《费曼物理学讲义卷一》 第1天 2019/6.12
  6. 笃定“凡勃仑效应”?索尼可能想错了
  7. 基于浮云E绘图源码定制开发网络状态图(拓扑图),关联业务对象,并动态更新
  8. linux内核漏洞查询,GitHub - F1uYu4n/linux-kernel-exploits: linux-kernel-exploits Linux平台提权漏洞集合...
  9. Linux图形化磁盘管理工具gparted
  10. 2014热门网络词汇汇总