不废话,来看
1.双人枪战
#include
#include
#include
#include
using namespace std;
int SIZ = 20;
HANDLE hout = GetStdHandle(STD_OUTPUT_HANDLE);
COORD coord;
HANDLE hCon;
enum Color { DARKBLUE = 1, DARKGREEN, DARKTEAL, DARKRED, DARKPINK, DARKYELLOW, GRAY, DARKGRAY, BLUE, GREEN, TEAL, RED, PINK, YELLOW, WHITE };
void SetColor(Color c) {
if (hCon == NULL)
hCon = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hCon, c);
}
SYSTEMTIME sys;
//sys.wYear,sys.wMonth,sys.wDay,sys.wHour,sys.wMinute, sys.wSecond,sys.wMilliseconds,sys.wDayOfWeek
struct PLAYER {
int x, y;
int hp;
int gun;
int direct;
} p1, p2;
int map[1005][1005];
int abs(int x) {
if (x < 0) return -x;
return x;
}
void locate(int x, int y) {
coord.X = y - 1;
coord.Y = x - 1;
SetConsoleCursorPosition(hout, coord);
}
void print_map() {
locate(1, 1);
SetColor(GRAY);
for (int i = 1; i <= SIZ; i++) cout << "■";
locate(SIZ, 1);
for (int i = 1; i <= SIZ; i++) cout << "■";
for (int i = 2; i < SIZ; i++) {
locate(i, 1);
cout << "■";
locate(i, SIZ * 2 - 1);
cout << "■";
}
locate(SIZ + 1, 1);
SetColor(WHITE);
}
void create_tree(int x, int y) {
map[x][y] = map[x + 1][y] = map[x - 1][y] = map[x][y + 1] = map[x][y - 1] = 2;
}
void use_map(int x) {
if (x == 1) {
SIZ = 20;
SetColor(DARKGREEN);
map[16][6] = map[15][6] = map[17][6] = map[16][7] = map[16][5] = map[14][13] = map[13][12] = map[13][13] = 2;
for (int i = 2; i < SIZ; i++) {
for (int j = 2; j < SIZ; j++) {
if (map[i][j] == 2) {
locate(i, j * 2 - 1);
cout << "■";
}
}
}
SetColor(GRAY);
for (int i = 5; i <= 15; i++) {
map[i][i] = 1;
locate(i, i * 2 - 1);
cout << "■";
}
SetColor(WHITE);
} else if (x == 2) {
SIZ = 30;
SetColor(GRAY);
for (int i = 4; i <= 26; i++) {
if (i == 13 || i == 14 || i == 15) continue;
map[i][4] = map[4][i] = map[26][i] = map[i][26] = 1;
}
for (int i = 1; i <= SIZ; i++) {
for (int j = 1; j <= SIZ; j++) {
if (map[i][j] == 1) {
locate(i, j * 2 - 1);
cout << "■";
}
}
}
SetColor(DARKGREEN);
for (int i = 10; i <= 20; i++) {
if (i == 13 || i == 17) continue;
map[i][10] = map[10][i] = map[20][i] = map[i][20] = 2;
}
create_tree(5, 5);
create_tree(18, 18);
for (int i = 1; i <= SIZ; i++) {
for (int j = 1; j <= SIZ; j++) {
if (map[i][j] == 2) {
locate(i, j * 2 - 1);
cout << "■";
}
}
}
SetColor(WHITE);
}
}
void cleanbody(int x, int y);
void putbody(int x, int y, int z);
void player_init() {
p1.hp = p2.hp = 300;
p1.gun = p2.gun = 1;
p1.direct = 4;
p2.direct = 2;
p1.x = 2;
p1.y = 2;
p2.x = SIZ - 1;
p2.y = SIZ - 1;
putbody(p1.x, p1.y, 1);
putbody(p2.x, p2.y, 2);
}
void mapinit() {
for (int i = 1; i <= SIZ; i++) {
map[i][1] = map[1][i] = map[SIZ][i] = map[i][SIZ] = 1;
}
}
void init() {
printf("Use Which Map?\n");
int x;
cin >> x;
system("cls");
use_map(x);
mapinit();
print_map();
player_init();
}
void putbody(int x, int y, int z) {
if (z == 1) SetColor(BLUE);
else if (z == 2) SetColor(RED);
locate(x, y * 2 - 1);
cout << "■";
SetColor(WHITE);
}
void cleanbody(int x, int y) {
locate(x, y * 2 - 1);
cout << " ";
}
/*
LIST
direct:
w 1
a 2
s 3
d 4
gun:
usp 1
mimigun 2
awp 3
block:
void 0
stone 1
tree 2
player 3
clip 4
*/
bool judge(int x, int y) {
if (map[x][y] == 1) return false;
if (map[x][y] == 2) return false;
if (map[x][y] == 3) return false;
return true;
}
bool judge_gun(int x, int y) {
if (map[x][y] == 1) return 0;
if (map[x][y] == 2) return 0;
if (map[x][y] == 3) {
if (p1.x == x && p1.y == y) p1.hp -= 50; //此处暂时不管威力
else p2.hp -= 50;
return 0;
}
return 1;
}
int cnt;
struct Clip {
int x, y;
int derect;
int force;
int start;
bool flag;
} clip[1000000];
void create_clip(int y, int x, int a, int b) {
int X, Y;
if (y == 1) {
if (!judge_gun(a - 1, b)) return;
X = a - 1;
Y = b;
} else if (y == 2) {
if (!judge_gun(a, b - 1)) return;
X = a;
Y = b - 1;
} else if (y == 3) {
if (!judge_gun(a + 1, b)) return;
X = a + 1;
Y = b;
} else if (y == 4) {
if (!judge_gun(a, b + 1)) return;
X = a;
Y = b + 1;
}
cnt++;
GetLocalTime( &sys );
clip[cnt].start = sys.wMilliseconds + sys.wSecond * 60 + sys.wHour * 3600;
clip[cnt].x = X;
clip[cnt].y = Y;
if (x == 1) {
clip[cnt].derect = p1.direct;
} else if (x == 2) {
clip[cnt].derect = p2.direct;
}
}
void shoot(int x) {
if (x == 1) {
create_clip(p1.direct, 1, p1.x, p1.y);
} else if (x == 2) {
create_clip(p2.direct, 2, p2.x, p2.y);
}
}
void clean_clip(int x, int y) {
locate(x, y * 2 - 1);
cout << " ";
locate(1, 1);
}
void print_clip(int x, int y, int i) {
if (clip[i].flag) {
clean_clip(x, y);
return;
}
locate(x, y * 2 - 1);
SetColor(YELLOW);
cout << "''";
locate(1, 1);
// system("pause");
}
void clipmove() {
GetLocalTime( &sys );
int t = sys.wMilliseconds + sys.wSecond * 60 + sys.wHour * 3600;
for (int i = 1; i <= cnt; i++) {
if (clip[i].flag) continue;
if (abs(clip[i].start - t) > 50) {
clip[i].start = t;
int x = clip[i].x;
int y = clip[i].y;
if (clip[i].derect == 1) {
if (!judge_gun(clip[i].x - 1, clip[i].y)) {
clip[i].flag = 1;
clean_clip(x, y);
continue;
}
clean_clip(clip[i].x, clip[i].y);
clip[i].x--;
print_clip(clip[i].x, clip[i].y, i);
} else if (clip[i].derect == 2) {
if (!judge_gun(clip[i].x, clip[i].y - 1)) {
clip[i].flag = 1;
clean_clip(x, y);
continue;
}
clean_clip(clip[i].x, clip[i].y);
clip[i].y--;
print_clip(clip[i].x, clip[i].y, i);
} else if (clip[i].derect == 3) {
if (!judge_gun(clip[i].x + 1, clip[i].y)) {
clip[i].flag = 1;
clean_clip(x, y);
continue;
}
clean_clip(clip[i].x, clip[i].y);
clip[i].x++;
print_clip(clip[i].x, clip[i].y, i);
} else if (clip[i].derect == 4) {
if (!judge_gun(clip[i].x, clip[i].y + 1)) {
clip[i].flag = 1;
clean_clip(x, y);
continue;
}
clean_clip(clip[i].x, clip[i].y);
clip[i].y++;
print_clip(clip[i].x, clip[i].y, i);
}
}
}
}
void judge_hp() {
int x = p1.hp;
int y = p2.hp;
if (x < 0 && y < 0 && x > y) swap(x, y);
if (x <= 0) {
locate(1, 1);
system("cls");
printf("GAME OVER!\nTHE WINNER IS P2!");
Sleep(5000);
printf("\n-MADE BY Floatiy-");
getch();
exit(0);
} else if (y <= 0) {
locate(1, 1);
system("cls");
printf("GAME OVER!\nTHE WINNER IS P1!");
Sleep(5000);
printf("\n-MADE BY Floatiy-");
getch();
exit(0);
}
}
void prog() {
char ch;
while (true) {
if (kbhit()) {
ch = getch();
if (ch == 'w' && judge(p1.x - 1, p1.y)) {
p1.direct = 1;
cleanbody(p1.x, p1.y);
map[p1.x][p1.y] = 0;
putbody(--p1.x, p1.y, 1);
map[p1.x][p1.y] = 3;
} else if (ch == '8' && judge(p2.x - 1, p2.y)) {
p2.direct = 1;
cleanbody(p2.x, p2.y);
map[p2.x][p2.y] = 0;
putbody(--p2.x, p2.y, 2);
map[p2.x][p2.y] = 3;
} else if (ch == 'a' && judge(p1.x, p1.y - 1)) {
p1.direct = 2;
cleanbody(p1.x, p1.y);
map[p1.x][p1.y] = 0;
putbody(p1.x, --p1.y, 1);
map[p1.x][p1.y] = 3;
} else if (ch == '4' && judge(p2.x, p2.y - 1)) {
p2.direct = 2;
cleanbody(p2.x, p2.y);
map[p2.x][p2.y] = 0;
putbody(p2.x, --p2.y, 2);
map[p2.x][p2.y] = 3;
} else if (ch == 's' && judge(p1.x + 1, p1.y)) {
p1.direct = 3;
cleanbody(p1.x, p1.y);
map[p1.x][p1.y] = 0;
putbody(++p1.x, p1.y, 1);
map[p1.x][p1.y] = 3;
} else if (ch == '5' && judge(p2.x + 1, p2.y)) {
p2.direct = 3;
cleanbody(p2.x, p2.y);
map[p2.x][p2.y] = 0;
putbody(++p2.x, p2.y, 2);
map[p2.x][p2.y] = 3;
} else if (ch == 'd' && judge(p1.x, p1.y + 1)) {
p1.direct = 4;
cleanbody(p1.x, p1.y);
map[p1.x][p1.y] = 0;
putbody(p1.x, ++p1.y, 1);
map[p1.x][p1.y] = 3;
} else if (ch == '6' && judge(p2.x, p2.y + 1)) {
p2.direct = 4;
cleanbody(p2.x, p2.y);
map[p2.x][p2.y] = 0;
putbody(p2.x, ++p2.y, 2);
map[p2.x][p2.y] = 3;
} else if (ch == '0') {
shoot(2);
} else if (ch == ' ') {
shoot(1);
}
Sleep(20);
}
clipmove();
judge_hp();
}
}
void welcome() {
printf("操作方法:\n玩家1 wasd控制移动,空格攻击\n玩家2 数字小键盘4568控制移动,0攻击\n");
Sleep(2000);
}
int main() {
welcome();
GetLocalTime( &sys );
init();
prog();
return 0;
}
绝对好玩,和好基友玩了一上午
2.老游戏,贪吃蛇
#include
#include
#include
#include
#include
#include
#include
using namespace std;
/*** 光标定位 ***/
HANDLE hout=GetStdHandle(STD_OUTPUT_HANDLE);
COORD coord;
void locate(int x,int y) {
coord.X=y;
coord.Y=x;
SetConsoleCursorPosition(hout,coord);
};
/*** 隐藏光标 ***/
void hide() {
CONSOLE_CURSOR_INFO cursor_info= {1,0};
SetConsoleCursorInfo(hout, &cursor_info);
}
/*** 生成随机数 ***/
double random(double start, double end) {
return start+(end-start)*rand()/(RAND_MAX + 1.0);
}
/*** 定义地图的长宽,蛇的坐标,长度,方向,食物的位置 ***/
int m,n;
struct node {
int x,y;
} snake[1000];
int snake_length,dir;
node food;
int direct[4][2]= {{-1,0},{1,0},{0,-1},{0,1}};
/*** 输出墙 ***/
void print_wall() {
cout << " ";
for (int i=1; i<=n; i++)
cout << "-";
cout << endl;
for (int j=0; j<=m-1; j++) {
cout << "|";
for (int i=1; i<=n; i++) cout << " ";
cout << "|" << endl;
}
cout << " ";
for (int i=1; i<=n; i++)
cout << "-";
}
/*** 首次输出蛇,其中snake[0]代表头 ***/
void print_snake() {
locate(snake[0].x,snake[0].y);
cout << "#";
for (int i=1; i<=snake_length-1; i++) {
locate(snake[i].x,snake[i].y);
cout << "*";
}
}
/*** 判断是否撞墙或者自撞 ***/
bool is_correct() {
if (snake[0].x==0 || snake[0].y==0 || snake[0].x==m+1 || snake[0].y==n+1) return false;
for (int i=1; i<=snake_length-1; i++) {
if (snake[0].x==snake[i].x && snake[0].y==snake[i].y) return false;
}
return true;
}
/*** 随机生成并输出食物位置 ***/
bool print_food() {
srand((unsigned)time(0));
bool e;
while (1) {
e=true;
int i=(int) random(0,m)+1,j=(int) random(0,n)+1;
food.x=i;
food.y=j;
for (int k=0; k<=snake_length-1; k++) {
if (snake[k].x==food.x && snake[k].y==food.y) {
e=false;
break;
}
}
if (e) break;
}
locate(food.x,food.y);
cout << "$";
return true;
}
/*** 蛇的前进 ***/
bool go_ahead() {
node temp;
bool e=false;
temp=snake[snake_length-1];
for (int i=snake_length-1; i>=1; i--)
snake[i]=snake[i-1];
snake[0].x+=direct[dir][0];
snake[0].y+=direct[dir][1];
locate(snake[1].x,snake[1].y);
cout << "#";
/*** 吃到了食物 ***/
if (snake[0].x==food.x && snake[0].y==food.y) {
snake_length+=2;
e=1;
snake[snake_length-1]=temp;
}
/*** 输出此时蛇状态 ***/
if (!e) {
locate(temp.x,temp.y);
cout << " ";
} else
print_food();
locate(snake[0].x,snake[0].y);
cout << "@";
/*** 如果自撞 ***/
if (!is_correct()) {
system("cls");
cout << "You lose!" << endl << "Length: " << snake_length << endl;
return false;
}
return true;
}
/*** 主函数 ***/
int main() {
while(1) {
cout << "---------------------贪吃蛇----------------------" << endl;
cout << " 请注意窗口大小,以免发生错位.建议将窗口调为最大." << endl;
cout << "先选择难度.请在1-100中输入1个数,1最简单,100则最难" << endl;
cout << " 然后进入游戏画面,以方向键控制方向.祝你游戏愉快!" << endl;
cout << "-------------------------------------------------" << endl;
m=25;
n=40;
if (m<10 || n<10 || m>25 || n>40) {
cout << "ERROR" << endl;
system("pause");
return 0;
}
int hard;
cin >> hard;
if (hard<=0 || hard>100) {
cout << "ERROR" << endl;
system("pause");
return 0;
}
/*** 数据全部初始化,包括蛇长,位置,方向 ***/
snake_length=5;
clock_t a,b;
char ch;
double hard_len;
for (int i=0; i<=4; i++) {
snake[i].x=1;
snake[i].y=5-i;
}
dir=3;
/*** 输出初始地图,蛇与食物 ***/
system("cls");
hide();
print_wall();
print_food();
print_snake();
locate(m+2,0);
cout << "You length is: ";
/*** 开始游戏 ***/
while (1) {
/*** 难度随长度增加而提高 ***/
hard_len=(double)snake_length/(double) (m*n);
/*** 调节时间,单位是ms ***/
a=clock();
while (1) {
b=clock();
if (b-a>=(int)(400-30*hard)*(1-sqrt(hard_len))) break;
}
/*** 接受键盘输入的上下左右,并以此改变方向 ***/
if (kbhit()) {
ch=getch();
if (ch==-32) {
ch=getch();
switch(ch) {
case 72:
if (dir==2 || dir==3)
dir=0;
break;
case 80:
if (dir==2 || dir==3)
dir=1;
break;
case 75:
if (dir==0 || dir==1)
dir=2;
break;
case 77:
if (dir==0 || dir==1)
dir=3;
break;
}
}
}
/*** 前进 ***/
if (!go_ahead()) break;
/*** 在最后输出此时长度 ***/
locate(m+2,12);
cout << snake_length;
}
system("pause");
}
return 0;
}
3.飞机大战
#include
#include
#include
#include
#include
using namespace std;
/*=============== all the structures ===============*/
typedef struct Frame
{
COORD position[2];
int flag;
}Frame;
/*=============== all the functions ===============*/
void SetPos(COORD a)// set cursor
{
HANDLE out=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(out, a);
}
void SetPos(int i, int j)// set cursor
{
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<=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 <<"( "<>";
//drawFrame(45, 9, 79, 17, '=', '|');
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;
}
}
}
}
}
/*
DWORD WINAPI MusicFun(LPVOID lpParamte)
{
//DWORD OBJ;
sndPlaySound(TEXT("bgm.wav"), SND_FILENAME|SND_ASYNC);
return 0;
}
*/
/*================== 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<= 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
好玩!!!
4.烧脑的迷宫,反正我没过关
#include
#include
#include
using namespace std;
const long long n=29,jg=25;
string p=" *!|-=.<^>1234567890@$%?&_~";
long long r=1;
char f='y';
void print(string a[n])
{
system("cls");
for(long long i=0;ijg)r=1;
}
system("cls");
return ;
}
void sm()
{
system("cls");
cout<<"\n\n 说明:\n\n\n";
cout<<" 按空格开始游戏后\n";
cout<<" W\n";
cout<<" A S D\n";
cout<<" 移动\n";
cout<<" 按R键返回起点\n";
cout<<" 按P键返回主界面\n";
cout<<" 按Q键设立传送点\n";
cout<<" 按E键返回传送点\n";
cout<<" +号处为终点\n\n\n";
cout<<" 按空格继续···";
long long ok='\0';
while(ok=getch(),ok!=' ');
system("cls");
return ;
}
int main()
{
while(1)
{
long long xx=1,yy=1;
system("cls");
f='y';
cout<<"\n\n\n\n\n\n\n\n\n\n\n";
cout<<" 迷宫游戏\n";
cout<<" 按空格开始游戏\n";
cout<<" 按0退出游戏\n";
cout<<" 按1换皮肤\n";
cout<<" 按2游戏说明\n";
cout<<"\n\n\n\n\n\n\n";
cout<<" 制作:孙大帅哥";
long long ok=getch();
while(ok!='0'&&ok!='1'&&ok!='2'&&ok!=' ')ok=getch();
switch(ok)
{
case ' ':
break;
case '0':
tc();
return 0;
break;
case '1':
hf();
f='n';
break;
case '2':
sm();
f='n';
break;
}
while(f=='y')
{
system("cls");
string a[n];
long long x,y,qx,qy;
long long ch;
srand(time(0));
long long s=rand()%6+1;
switch(s)
{
case 1:
qx=1;
qy=1;
a[0]="###########";
a[1]="# # # #";
a[2]="# # # #";
a[3]="# ##### ###";
a[4]="# # ###+#";
a[5]="# # #";
a[6]="###########";
break;
case 2:
qx=8;
qy=12;
a[0]="####################";
a[1]="#+ # # #";
a[2]="# ## #### ### # #";
a[3]="# #### ##### #";
a[4]="### # # ## #";
a[5]="##### ########## # #";
a[6]="# ## ### ## #";
a[7]="## ### ### # ## ##";
a[8]="# # # #";
a[9]="####################";
break;
case 3:
qx=1;
qy=1;
a[0]="###################";
a[1]="# # # # # #";
a[2]="# # # # # # # # # #";
a[3]="# # # # # # # # # #";
a[4]="# # # # # # # # # #";
a[5]="# # # # # # # # # #";
a[6]="# # # # # # # # # #";
a[7]="# # # # # # # # # #";
a[8]="# # # # # # # # # #";
a[9]="# # # # # # # # # #";
a[10]="# # # # #+#";
a[11]="####################";
break;
case 4:
qx=1;
qy=1;
a[0]="########################################";
a[1]="# #";
a[2]="# #################################### #";
a[3]="# # # #";
a[4]="# # ###################### ##### #######";
a[5]="# # #+ # # # ### #";
a[6]="# # # # # ######### # #### ## #### ## #";
a[7]="# # # # # ## # ## ## # # #";
a[8]="# # # ### ## # # ########### ## ## # #";
a[9]="# # # # # # # # # # # # #";
a[10]="# # ### ###### ### # ######## ##### ## #";
a[11]="# # # # # # # #";
a[12]="# # # ######## ############## ##### # #";
a[13]="# # # # #";
a[14]="# # ################################## #";
a[15]="# # # #";
a[16]="# #################################### #";
a[17]="# #";
a[18]="########################################";
break;
case 5:
qx=1;
qy=1;
a[0]="########################################";
a[1]="# # #";
a[2]="# ########### ################# ###### #";
a[3]="# # # # # ## # #";
a[4]="# # # #### ## # ## # #### ##### ## # # #";
a[5]="# # # # # # # # # # # #";
a[6]="# # # #### ###### ############### # #";
a[7]="# # ## # # # # # #";
a[8]="# # #### ######## ################# # #";
a[9]="# ## # # # # ##### # # #";
a[10]="# ########## # # # ### # #";
a[11]="### # # # # ##### # # #";
a[12]="# ######################## # # # #";
a[13]="# # # # ## # ###";
a[14]="# ### #### ####### ########### #### ## #";
a[15]="# # # # +#";
a[16]="########################################";
break;
case 6:
qx=1;
qy=1;
a[0]="##################################################################################################################";
a[1]="# #";
a[2]="# # ############################################################################################################ #";
a[3]="# # ### ############# ### #";
a[4]="# ## ## ###### +# ######################################################################### # # ### # #";
a[5]="# ### # ################### # # # # # # # # # # #";
a[6]="# #### # ############################################################# # # # # # #";
a[7]="# ##################################### ################## ## # ##### # # #";
a[8]="# ###### # ##### ########## + ########################### ## ## # # #";
a[9]="# # ######### ############## ###### # ## # ##################### ############ ######### # #";
a[10]="# # ##### # ###### # # ####### ######## # ### # # #";
a[11]="# # # ###### # #### ##### ########## # # # ##### ############## ###################### # ###";
a[12]="# ##### # # ## # #### ## # ##### ############# ####### # # # # #";
a[13]="# # # # # ## # ## # ############ ## # # # # ############# ###### ################ # # #";
a[14]="# # # # ##### ## # ## ## # # # # ## # # # ###### # ######### # ############# ######## ### #";
a[15]="# # # # ## # # # # # # ##### # # # # ############### # # #";
a[16]="# ### ########## # # #################################### # ##################################### ############# #";
a[17]="# # # ## # #### #";
a[18]="# # ####################### ################################################################# ################## #";
a[19]="# # # +#";
a[20]="##################################################################################################################";
break;
}
xx=x=qx,yy=y=qy;
a[x][y]=p[r];
print(a);
while(a[x][y]!='+')
{
ch=getch();
if(ch=='q')
{
xx=x;
yy=y;
}
if(ch=='e')
{
a[x][y]=' ';
a[xx][yy]=p[r];
x=xx;
y=yy;
}
if(ch=='r')
{
a[x][y]=' ';
a[qx][qy]=p[r];
x=qx;
y=qy;
}
if(ch=='p')
{
f='n';
break;
}
if((ch=='a'&&a[x][y-1]=='+')||(ch=='d'&&a[x][y+1]=='+')||(ch=='s'&&a[x+1][y]=='+')||(ch=='w'&&a[x-1][y]=='+'))
{
break;
}
if(ch==27)break;
if(ch==97&&a[x][y-1]==' '||a[x][y-1]=='|')
{
a[x][y]=' ';
y--;
a[x][y]=p[r];
}
if(ch==100&&a[x][y+1]==' '||a[x][y+1]=='|')
{
a[x][y]=' ';
y++;
a[x][y]=p[r];
}
if(ch==115&&a[x+1][y]==' '||a[x+1][y]=='|')
{
a[x][y]=' ';
x++;
a[x][y]=p[r];
}
if(ch==119&&a[x-1][y]==' '||a[x-1][y]=='|')
{
a[x][y]=' ';
x--;
a[x][y]=p[r];
}
print(a);
}
system("cls");
if(f=='n')break;
cout<<"you win!!!"<
谁过了告我
怎么样,收获满满吧!