当前位置:   article > 正文

DevC++可运行的C++小游戏合集_dev c++游戏代码

dev c++游戏代码

环境:DevC++6.7.5
语言:C++
小游戏:
1.贪吃蛇
2.推箱子
3.迷宫

第1种:贪吃蛇

#include <cstdio>
#include <iostream>
#include <ctime>
#include <conio.h>
#include <windows.h>      
#include <cstdlib>         
#include <cstring>         
using namespace std;
int a[100][100], dir[100][100];
//string guo[5]={'▲','◆','■','▼','★'};
int fx[4][2] = { {0,-1},{1,0},{0,1},{-1,0} }; //ap来记录奖励块的分   
int n, m, ff, f = 1, t = 50, T = 50, ap = 10, egg[2], danshu, headx, heady, endx, endy, point = 0, apple = 0, fangx, stopp = 0, panduan = 0;  //ff用来判断  panduan 0:中途退出;1:咬到自己;2:重置  
int lastfx;
int zuobi = 0;
int fff[110][110];
string print[4][4] = { {"═","╔","  ","╚"},{"╝","║","╚","  "},{"  ","╗","═","╝"},{"╗"," ","╔","║"} };
void color(int a)//颜色函数
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), a);
}
void gotoxy(int x, int y)//位置函数(行为x 列为y)
{
COORD pos;
pos.X = 2 * y;
pos.Y = x;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}
void reset() {
system("cls");
color(7); printf("                   ★"); color(10); printf("贪吃蛇"); color(11); printf("★\n\n"); color(7);
printf("⊙打印若有错位请调整窗口大小或按r重输小点的数⊙\n\n  请输入场地大小(格式:行数 列数) 推荐(20 20) \n\n>>");
scanf("%d%d", &n, &m);
system("cls");
color(14);
for (int i = 1; i <= m; i++) { gotoxy(0, i); printf("※"); gotoxy(n + 1, i); printf("※"); }
for (int i = 1; i <= n; i++) { gotoxy(i, 0); printf("※"); gotoxy(i, m + 1); printf("※"); }
color(10);
memset(fff, 0, sizeof(fff));
gotoxy(0, 0); printf("┍");
gotoxy(n + 1, 0); printf("┕");
gotoxy(0, m + 1); printf("┑");
gotoxy(n + 1, m + 1); printf("┙");
color(7);
gotoxy(0, m + 5); printf("方向:a/s/d/w | 1/2/3/5");
gotoxy(1, m + 5); printf("暂停:p       |       0");
gotoxy(2, m + 5); printf("减速:q/j     |     4/7");
gotoxy(3, m + 5); printf("加速:e/k     |     6/9");
gotoxy(4, m + 5); printf("重置:r       |       .");
gotoxy(5, m + 5); printf("地图:h       |       +");
headx = endx = endy = 1; heady = 3;
f = 1; ff = 3;
memset(a, 1, sizeof(a));
memset(dir, 0, sizeof(dir));
a[1][1] = a[1][2] = a[1][3] = 0;
gotoxy(1, 1); printf("⊙");
gotoxy(1, 2); printf("⊙");
gotoxy(1, 3); printf("◎");
dir[1][1] = dir[1][2] = dir[1][3] = 2;
apple = 0; fangx = 2; point = 0; danshu = 0; lastfx = 2; stopp = 0;
if (zuobi) { color(12); gotoxy(12, m + 5); printf("作弊可耻!"); gotoxy(m + 4, 0); printf("做了弊还没路走那就救不了你了,乖乖重来吧......"); color(7); }
}
void haha() {
char ch = getch();
if ((ch == 'a' || ch == '1') && dir[headx][heady] != 2) { fangx = 0; return; }
if ((ch == 's' || ch == '2') && dir[headx][heady] != 3) { fangx = 1; return; }
if ((ch == 'd' || ch == '3') && dir[headx][heady] != 0) { fangx = 2; return; }
if ((ch == 'w' || ch == '5') && dir[headx][heady] != 1) { fangx = 3; return; }
if (ch == 'p' || ch == '0') { stopp = (stopp + 1) % 2; return; }
if (ch == 'q' || ch == '4') { T += 10; if (T >= 1005) T = 1005; return; }
if (ch == 'e' || ch == '6') { T -= 10; if (T <= 1) T = 2; return; }
if (ch == 'j' || ch == '7') { T += 1; if (T >= 1005) T = 1005; return; }
if (ch == 'k' || ch == '9') { T -= 1; if (T <= 1) T = 2; return; }
if (ch == 'r' || ch == '.') { ff = 2; f = 0; panduan = 0; return; }
if (ch == 'h' || ch == '8') {
    zuobi += 1; zuobi %= 2;
    if (zuobi) { color(12); gotoxy(12, m + 5); printf("作弊可耻!"); gotoxy(m + 4, 0); printf("做了弊还没路走那就救不了你了,乖乖重来吧......"); color(7); }
    else { printf("                "); gotoxy(m + 4, 0); printf("                                                   "); }
}
if (ch == 'g' || ch == '+') {
    gotoxy(n + 50, 0);
    printf("现在切换到地图编辑模式\n\nq/4 为开始放置模式(光标移动过的痕迹会留下障碍物)\n\ne/6 为取消放置障碍物模式\n\nj/0 为橡皮模式(再按一次退出橡皮模式)\n\n按 h/+ 继续游戏\n\n");
    printf("\n按任意键开始编辑地图");
    color(13);
    int x = 1, y = 1, dfx, moshi = 0;
    ch = getch(); gotoxy(0, 0); gotoxy(1, 1);
    while (ch != 'h' && ch != '+') {
        if (ch == 'a' || ch == '1') dfx = 0;
        else if (ch == 's' || ch == '2') dfx = 1;
        else if (ch == 'd' || ch == '3') dfx = 2;
        else if (ch == 'w' || ch == '5') dfx = 3;
        else dfx = 5;
        if (ch == 'q' || ch == '4') moshi = 1;
        if (ch == 'e' || ch == '6') moshi = 0;
        if (ch == 'j' || ch == '0') if (moshi - 2) moshi = 2; else moshi = 0;
        if (dfx <= 4) {
            if (x + fx[dfx][0] > 0 && x + fx[dfx][0] <= n && y + fx[dfx][1] > 0 && y + fx[dfx][1] <= m) { x += fx[dfx][0]; y += fx[dfx][1]; }
            if (x > 0 && x <= n && y > 0 && y <= m) {
                gotoxy(x, y);
                if (moshi == 1 && a[x][y] && !fff[x][y]) { a[x][y] = 0; fff[x][y] = 1; printf("□"); }
                if (moshi == 2 && fff[x][y]) { a[x][y] = 1; fff[x][y] = 0; printf("  "); }
                gotoxy(x, y);
            }
        }
        ch = getch();
    }
    color(7);
}
}
void findegg() {
srand(time(NULL));
int aa = 1;
while (!a[egg[0]][egg[1]]) { egg[0] = (rand() % (n)) + 1; egg[1] = (rand() % m) + 1; }
a[egg[0]][egg[1]] = 0;
point += ap;
gotoxy(egg[0], egg[1]); if (!apple) { printf("★"); ap = 8000 / T; if (ap >= 200) ap = 200; }
else { printf("●"); ap = 10; }
apple++; apple = apple % 10;
gotoxy(n + 2, 0); printf("距离下一个奖励蛋还有 "); color(11); cout << 9 - (8 + apple) % 10; color(7); printf(" 个");
danshu++;
return;
}
int gg() {
if (ff == 0) return(0);
if (ff == 1) { gotoxy(n + 2, 1); Sleep(3000); gotoxy(n + 26, 1); gotoxy(n + 10, 0); printf("哦豁~ 你咬到自己了o( ̄▽ ̄)d\n\n\n你共吃蛋 %d 个\n\n\n你共得分 %d 分,恭喜!\n\n\n等一下就继续", danshu, point); Sleep(5000); if (kbhit) return(1); }
if (ff == 2) return(1);
return 0;
}
void dong() {
gotoxy(11, m + 3); printf("当前的蛋有 %d 分            ", ap);
if (ap - 3 > 10) ap -= 3;
if (ap != 10) {
    gotoxy(egg[0], egg[1]);
    color(ap % 10);
    printf("★");
    color(7);
}
int x, y;
x = (headx + fx[fangx][0] - 1 + n) % (n)+1; y = (heady + fx[fangx][1] - 1 + m) % (m)+1;
dir[headx][heady] = fangx;
if (x == egg[0] && y == egg[1]) {
    gotoxy(headx, heady); cout << print[lastfx][fangx];
    dir[headx][heady] = fangx;
    headx = x; heady = y; a[x][y] = 0;
    gotoxy(headx, heady); printf("◎");
    findegg();
}
else if (a[x][y]) {
    gotoxy(headx, heady); cout << print[lastfx][fangx];
    headx = x; heady = y; a[x][y] = 0;
    gotoxy(headx, heady); printf("◎");
    gotoxy(endx, endy); printf("  "); a[endx][endy] = 1;
    x = endx; y = endy;
    endx += fx[dir[x][y]][0]; endx = (endx - 1 + n) % (n)+1;
    endy += fx[dir[x][y]][1]; endy = (endy - 1 + m) % (m)+1;
    dir[x][y] = -1;
}
else if (!zuobi) { f = 0; ff = 1; }
dir[headx][heady] = fangx;
lastfx = fangx;
return;
}
int main() {
while (1) {
    srand(time(NULL));
    reset();
    egg[0] = (rand() % n - 1) + 2; egg[1] = (rand() % m) + 1;
    a[egg[0]][egg[1]] = 0;
    gotoxy(egg[0], egg[1]); if (apple) { printf("★"); ap = 100; }
    else printf("●");
    while (f) {
        if (kbhit()) haha();
        gotoxy(9, m + 5); printf("吃蛋:%d 个", danshu);
        gotoxy(8, m + 5); printf("速度: %d   ", 1005 - T);
        //while (stopp) {Sleep(10); if (kbhit()) haha();}
        Sleep(1); t = (t - 1 + T) % T;
   f (t == 0 && !stopp) dong();
        gotoxy(7, m + 5); printf("得分:%d 分", point);
        gotoxy(12, m + 5);
    }
    if (!gg()) return 0;
}
return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183

第2种:推箱子

#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <time.h>
#define Height 25 //迷宫的高度,必须为奇数
#define Width 25 //迷宫的宽度,必须为奇数
#define Wall 1
#define Road 0
#define Start 2
#define End 3
#define Esc 5
#define Up 1
#define Down 2
#define Left 3
#define Right 4
int map[Height+2][Width+2];
void gotoxy(int x,int y) { //移动坐标
    COORD coord;
    coord.X=x;
    coord.Y=y;
    SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), coord );
}
void hidden() { //隐藏光标
    HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
    CONSOLE_CURSOR_INFO cci;
    GetConsoleCursorInfo(hOut,&cci);
    cci.bVisible=0;//赋1为显示,赋0为隐藏
    SetConsoleCursorInfo(hOut,&cci);
}
void create(int x,int y) { //随机生成迷
    int c[4][2]= {0,1,1,0,0,-1,-1,0}; //四个方向
    int i,j,t;
//将方向打乱
    for(i=0; i<4; i++) {
        j=rand()%4;
        t=c[i][0];
        c[i][0]=c[j][0];
        c[j][0]=t;
        t=c[i][1];
        c[i][1]=c[j][1];
        c[j][1]=t;
    }
    map[x][y]=Road;
    for(i=0; i<4; i++)
        if(map[x+2*c[i][0]][y+2*c[i][1]]==Wall) {
            map[x+c[i][0]][y+c[i][1]]=Road;
            create(x+2*c[i][0],y+2*c[i][1]);
        }
}
int get_key() { //接收按键
    char c;
    while(c=getch()) {
        if(c==27) return Esc; //Esc
        if(c!=-32)continue;
        c=getch();
        if(c==72) return Up; //上
        if(c==80) return Down; //下
        if(c==75) return Left; //左
        if(c==77) return Right; //右
    }
    return 0;
}
void paint(int x,int y) { //画迷宫
    gotoxy(2*y-2,x-1);
    switch(map[x][y]) {
        case Start:
            printf("入");
            break; //画入口
        case End:
            printf("出");
            break; //画出口
        case Wall:
            printf("▇");
            break; //画墙
        case Road:
            printf("  ");
            break; //画路
    }
}
void game() {
    int x=2,y=1; //玩家当前位置,刚开始在入口处
    int c; //用来接收按键
    while(1) {
        gotoxy(2*y-2,x-1);
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);
        printf("▇▇"); //画出玩家当前位置
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_BLUE|FOREGROUND_RED|FOREGROUND_GREEN);
 
        if(map[x][y]==End) { //判断是否到达出口
            gotoxy(30,24);
            printf("到达终点,按任意键结束");
            getch();
            break;
        }
        c=get_key();
        if(c==Esc) {
            gotoxy(0,24);
            break;
        }
        switch(c) {
            case Up: //向上走
                if(map[x-1][y]!=Wall) {
                    paint(x,y);
                    x--;
                }
                break;
            case Down: //向下走
                if(map[x+1][y]!=Wall) {
                    paint(x,y);
                    x++;
                }
                break;
            case Left: //向左走
                if(map[x][y-1]!=Wall) {
                    paint(x,y);
                    y--;
                }
                break;
            case Right: //向右走
                if(map[x][y+1]!=Wall) {
                    paint(x,y);
                    y++;
                }
                break;
        }
    }
}
int main() {
    int i,j;
    srand((unsigned)time(NULL)); //初始化随即种子
    hidden(); //隐藏光标
    for(i=0; i<=Height+1; i++)
        for(j=0; j<=Width+1; j++)
            if(i==0||i==Height+1||j==0||j==Width+1) //初始化迷宫
                map[i][j]=Road;
            else map[i][j]=Wall;
    create(2*(rand()%(Height/2)+1),2*(rand()%(Width/2)+1)); //从随机一个点开始生成迷宫,该点行列都为偶数
    for(i=0; i<=Height+1; i++) { //边界处理
        map[i][0]=Wall;
        map[i][Width+1]=Wall;
    }
    for(j=0; j<=Width+1; j++) { //边界处理
        map[0][j]=Wall;
        map[Height+1][j]=Wall;
    }
    map[2][1]=Start; //给定入口
    map[Height-1][Width]=End; //给定出口
    for(i=1; i<=Height; i++)
        for(j=1; j<=Width; j++) //画出迷宫
            paint(i,j);
    game(); //开始游戏
    getch();
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154

在这里插入图片描述

第3种:迷宫

#include<iostream>
#include<stdio.h>
#include<conio.h>
#include <windows.h>
 
using namespace std;
void Game_Menu(HANDLE hout);
void Game_description(HANDLE hout);
void gotoxy(HANDLE hout, int x, int y);
int DrawMap(HANDLE hout);
void Move(HANDLE hout);
int finish();
void setmap(int n);
void color(int m);
bool flag = true;
int pass = 1;
#define R 10
#define C 10
#define framex 20
#define framey 14
int map[R][C] = {0};
int map1[R][C] = {
	{ 0,0,1,1,1,0,0,0 },
	{ 0,0,1,3,1,0,0,0 },
	{ 0,0,1,0,1,1,1,1 },
	{ 1,1,1,0,0,4,3,1 },
	{ 1,3,4,4,0,1,1,1 },
	{ 1,1,1,5,4,1,0,0 },
	{ 0,0,0,1,3,1,0,0 },
	{ 0,0,0,1,1,1,0,0 }
};
int map2[R][C]= {
	{1,1,1,1,1,0,0,0,0,0},
	{1,5,0,0,1,0,0,0,0,0},
	{1,0,4,4,1,0,1,1,1,0},
	{1,0,4,0,1,0,1,3,1,0},
	{1,1,1,0,1,1,1,3,1,0},
	{0,1,1,0,0,0,0,3,1,0},
	{0,1,0,0,0,1,0,0,1,0},
	{0,1,0,0,0,1,1,1,1,0},
	{0,1,1,1,1,1,0,0,0,0}
};
int map3[R][C]= {
	{ 0,0,0,1,1,1,1,1,1,1 },
	{ 0,0,1,1,0,0,1,0,5,1 },
	{ 0,0,1,0,0,0,1,0,0,1 },
	{ 0,0,1,4,0,4,0,4,0,1 },
	{ 0,0,1,0,4,1,1,0,0,1 },
	{ 1,1,1,0,4,0,1,0,1,1 },
	{ 1,3,3,3,3,3,0,0,1,0 },
	{ 1,1,1,1,1,1,1,1,1,0 },
};
void Game_Menu(HANDLE hout) { 
	system("cls");
	gotoxy(hout, framex, 1);
	cout << "*******************";
	gotoxy(hout, framex, 3);
	cout << "   推箱子    ";
	gotoxy(hout, framex, 5);
	cout << "  按s或S开始   ";
	gotoxy(hout, framex, 7);
	cout << "  按q或Q退出   ";
	gotoxy(hout, framex, 9);
	cout << "游戏前关闭中文输入 ";
	gotoxy(hout, framex, 11);
	cout << "*******************";
	_getch();
};
void Game_description(HANDLE hout) { //操作提示
	system("cls");
	gotoxy(hout, framex, 1);
	cout << "*****************************";
	gotoxy(hout, framex, 3);
	cout << "   按方向键上下左右移动  ";
	gotoxy(hout, framex, 5);
	cout << " 所有箱子到达目的地游戏胜利 ";
	gotoxy(hout, framex, 7);
	cout << "     按q或Q退出     ";
	gotoxy(hout, framex, 9);
	cout << "*****************************";
};
void gotoxy(HANDLE hout, int x, int y) {
	COORD pos;
	pos.X = x;
	pos.Y = y;
	SetConsoleCursorPosition(hout, pos);
};
void print(int i) {
	switch(i) {
		case 0:
			color(0x7);
			cout << " "; 
			break;
		case 1:
			color(8);
			cout << "■";
			break;
		case 3:
			color(0xE);
			cout << "◇";
			break;
		case 4:
			color(4);
			cout << "□";
			break;
		case 5:
			color(3);
			cout << "♀"; 
			break;
		case 7:   
			color(6);
			cout << "◆";
			break;
		case 8:   
			color(3);
			cout << "♀";
			break;
		default:
			break;
	}
}
int DrawMap(HANDLE hout) {
	gotoxy(hout, framex + C, framey - 3);
	color(0xF);
	cout << "第" << pass << "关";
	for(int i = 0; i < R; i++) {
		gotoxy(hout, framex, framey + i);
		for(int j = 0; j < C; j++) { 
			print(map[i][j]);
		}
	}
	return 0;
};
void Move(HANDLE hout) {
	int x = 0, y = 0;
	for(int i = 0; i < R; i++) {
		for(int j = 0; j < C; j++) {
			if(map[i][j] == 5 || map [i] [j] == 8) {
				x = i;
				y = j;
				break;
			}
		}
	}
	gotoxy(hout, framex, framey + R);
	color(0xF);
	printf("当前位置:(%d, %d)", x, y);
	int ch = _getch();
 
	switch(ch) {
 
		case 'w':
		case 'W':
		case 72:
			if(map[x - 1][y] == 0 || map[x - 1][y] == 3) {
				map[x][y] -= 5;
				gotoxy(hout, framex + 2 * y, framey + x);
				print(map[x][y]);
				map[x - 1][y] += 5;
				gotoxy(hout, framex + 2 * y, framey + x - 1);
				print(map[x - 1][y]);
			} else if(map[x - 1][y] == 4 || map[x - 1][y] == 7) {
				if(map[x - 2][y] == 0 || map[x - 2][y] == 3) {
					map[x][y] -= 5;
					gotoxy(hout, framex + 2 * y, framey + x);
					print(map[x][y]);
					map[x - 1][y] += 1;
					gotoxy(hout, framex + 2 * y, framey + x - 1);
					print(map[x - 1][y]);
					map[x - 2][y] += 4;
					gotoxy(hout, framex + 2 * y, framey + x - 2);
					print(map[x - 2][y]);
				}
			}
			break;
 
		case 's':
		case 'S':
		case 80:
			if(map[x + 1][y] == 0 || map[x + 1][y] == 3) {
				map[x][y] -= 5;
				gotoxy(hout, framex + 2 * y, framey + x);
				print(map[x][y]);
				map[x + 1][y] += 5;
				gotoxy(hout, framex + 2 * y, framey + x + 1);
				print(map[x + 1][y]);
			} else if(map[x + 1][y] == 4 || map[x + 1][y] == 7) {
				if(map[x + 2][y] == 0 || map[x + 2][y] == 3) {
					map[x][y] -= 5;
					gotoxy(hout, framex + 2 * y, framey + x);
					print(map[x][y]);
					map[x + 1][y] += 1;
					gotoxy(hout, framex + 2 * y, framey + x + 1);
					print(map[x + 1][y]);
					map[x + 2][y] += 4;
					gotoxy(hout, framex + 2 * y, framey + x + 2);
					print(map[x + 2][y]);
				}
			}
			break;
 
		case 'a':
		case 'A':
		case 75:
			if(map[x][y - 1] == 0 || map[x][y - 1] == 3) {
				map[x][y] -= 5;
				gotoxy(hout, framex + 2 * y, framey + x);
				print(map[x][y]);
				map[x][y - 1] += 5;
				gotoxy(hout, framex + 2 * y - 2, framey + x);
				print(map[x][y - 1]);
			} else if(map[x][y - 1] == 4 || map[x][y - 1] == 7) {
				if(map[x][y - 2] == 0 || map[x][y - 2] == 3) {
					map[x][y] -= 5;
					gotoxy(hout, framex + 2 * y, framey + x);
					print(map[x][y]);
					map[x][y - 1] += 1;
					gotoxy(hout, framex + 2 * y - 2, framey + x);
					print(map[x][y - 1]);
					map[x][y - 2] += 4;
					gotoxy(hout, framex + 2 * y - 4, framey + x);
					print(map[x][y - 2]);
				}
			}
			break;
 
		case 'd':
		case 'D':
		case 77:
			if(map[x][y + 1] == 0 || map[x][y + 1] == 3) {
				map[x][y] -= 5;
				gotoxy(hout, framex + 2 * y, framey + x);
				print(map[x][y]);
				map[x][y + 1] += 5;
				gotoxy(hout, framex + 2 * y + 2, framey + x);
				print(map[x][y + 1]);
			} else if(map[x][y + 1] == 4 || map[x][y + 1] == 7) {
				if(map[x][y + 2] == 0 || map[x][y + 2] == 3) {
					map[x][y] -= 5;
					gotoxy(hout, framex + 2 * y, framey + x);
					print(map[x][y]);
					map[x][y + 1] += 1;
					gotoxy(hout, framex + 2 * y + 2, framey + x);
					print(map[x][y + 1]);
					map[x][y + 2] += 4;
					gotoxy(hout, framex + 2 * y + 4, framey + x);
					print(map[x][y + 2]);
				}
			}
			break;
		case 'q':
		case 'Q':
			flag = false;
		default:
			break;
	}
};
int finish() { //判断游戏结束
	for(int i = 0; i < R; i++) {
		for(int j = 0; j < C; j++) {
			if(map[i][j] == 4)return 0;
		}
	}
	return 1;
};
void setmap(int n) {
	switch(n) {
		case 1:
			memcpy(map, map1, sizeof(map1));
			break;
		case 2:
			memcpy(map, map2, sizeof(map2));
			break;
		case 3:
			memcpy(map, map3, sizeof(map3));
			break;
	}
};
void color(int m) { //改变输出符号的颜色
	HANDLE consolehend;
	consolehend = GetStdHandle(STD_OUTPUT_HANDLE);
	SetConsoleTextAttribute(consolehend, m);
};
int main() {
	HANDLE hout = GetStdHandle(STD_OUTPUT_HANDLE);
 
	Game_Menu(hout);
	char ch = getch();
	setmap(pass);
	Game_description(hout);
	DrawMap(hout);
	if(ch == 'q' || ch == 'Q') {
		return 0;
	}
	while(flag) {
		Move(hout);
		if(finish()) {
			DrawMap(hout);
			gotoxy(hout, framex, framey + R);
			cout << " 恭喜,成功过关!";
			gotoxy(hout, framex, framey + R + 2);
			cout << "重玩(R)";
			ch = getch();
			system("cls");
			pass++;
			if(ch == 'r' || ch == 'R')pass--;
			if(pass > 3) {
				gotoxy(hout, framex, framey);
				cout << " 您已通过全部关卡!";
				getch();
				flag = false;
			} else {
				setmap(pass);
				Game_description(hout);
				DrawMap(hout);
			}
		}
	}
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 249
  • 250
  • 251
  • 252
  • 253
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • 263
  • 264
  • 265
  • 266
  • 267
  • 268
  • 269
  • 270
  • 271
  • 272
  • 273
  • 274
  • 275
  • 276
  • 277
  • 278
  • 279
  • 280
  • 281
  • 282
  • 283
  • 284
  • 285
  • 286
  • 287
  • 288
  • 289
  • 290
  • 291
  • 292
  • 293
  • 294
  • 295
  • 296
  • 297
  • 298
  • 299
  • 300
  • 301
  • 302
  • 303
  • 304
  • 305
  • 306
  • 307
  • 308
  • 309
  • 310
  • 311
  • 312
  • 313
  • 314
  • 315
  • 316
  • 317
  • 318
  • 319
  • 320

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/638375
推荐阅读
相关标签
  

闽ICP备14008679号