0
已采纳
丁浩然
新手光能
新手光能
tcs
#include <windows.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#include <cstring>
#include <cstdio>
#include <iostream>
#define N 22
using namespace std;
int gameover;
int x1, y1; // 随机出米
int x,y;
long start;
//=======================================
//类的实现与应用initialize a
//=======================================
//下面定义贪吃蛇的坐标类
class snake_position
{
public:
int x,y; //x表示行,y表示列
snake_position() {};
void initialize(int &);//坐标初始化
};
snake_position position[(N-2)*(N-2)+1]; //定义贪吃蛇坐标类数组,有(N-2)*(N-2)个坐标
void snake_position::initialize(int &j)
{
x = 1;
y = j;
}
//下面定义贪吃蛇的棋盘图
class snake_map
{
private:
char s[N][N];//定义贪吃蛇棋盘,包括墙壁。
int grade, length;
int gamespeed; //前进时间间隔
char direction; // 初始情况下,向右运动
int head,tail;
int score;
bool gameauto;
public:
snake_map(int h=4,int t=1,int l=4,char d=77,int s=0):length(l),direction(d),head(h),tail(t),score(s) {}
void initialize(); //初始化函数
void show_game();
int updata_game();
void setpoint();
void getgrade();
void display();
};
//定义初始化函数,将贪吃蛇的棋盘图进行初始化
void snake_map::initialize()
{
int i,j;
for(i=1; i<=3; i++)
s[1][i] = '*';
s[1][4] = '#';
for(i=1; i<=N-2; i++)
for(j=1; j<=N-2; j++)
s[i][j]=' '; // 初始化贪吃蛇棋盘中间空白部分
for(i=0; i<=N-1; i++)
s[0][i] = s[N-1][i] = '-'; //初始化贪吃蛇棋盘上下墙壁
for(i=1; i<=N-2; i++)
s[i][0] = s[i][N-1] = '|'; //初始化贪吃蛇棋盘左右墙壁
}
//============================================
//输出贪吃蛇棋盘信息
void snake_map::show_game()
{
system("cls"); // 清屏
int i,j;
cout << endl;
for(i=0; i<N; i++)
{
cout << '\t';
for(j=0; j<N; j++)
cout<<s[i][j]<<' '; // 输出贪吃蛇棋盘
if(i==2) cout << "\t等级:" << grade;
if(i==6) cout << "\t速度:" << gamespeed;
if(i==10) cout << "\t得分:" << score << "分" ;
if(i==14) cout << "\t暂停:按一下空格键" ;
if(i==18) cout << "\t继续:按两下空格键" ;
cout<<endl;
}
}
//输入选择等级
void snake_map::getgrade()
{
cin>>grade;
while( grade>7 || grade<1 )
{
cout << "请输入数字1-7选择等级,输入其他数字无效" << endl;
cin >> grade;
}
switch(grade)
{
case 1:
gamespeed = 1000;
gameauto = 0;
break;
case 2:
gamespeed = 800;
gameauto = 0;
break;
case 3:
gamespeed = 600;
gameauto = 0;
break;
case 4:
gamespeed = 400;
gameauto = 0;
break;
case 5:
gamespeed = 200;
gameauto = 0;
break;
case 6:
gamespeed = 100;
gameauto = 0;
break;
case 7:
grade = 1;
gamespeed = 1000;
gameauto = 1;
break;
}
}
//输出等级,得分情况以及称号
void snake_map::display()
{
cout << "\n\t\t\t\t等级:" << grade;
cout << "\n\n\n\t\t\t\t速度:" << gamespeed;
cout << "\n\n\n\t\t\t\t得分:" << score << "分" ;
}
//随机产生米
void snake_map::setpoint()
{
srand(time(0));
do
{
x1 = rand() % (N-2) + 1;
y1 = rand() % (N-2) + 1;
}
while(s[x1][y1]!=' ');
s[x1][y1]='*';
}
char key;
int snake_map::updata_game()
{
gameover = 1;
key = direction;
start = clock();
while((gameover=(clock()-start<=gamespeed))&&!kbhit());
//如果有键按下或时间超过自动前进时间间隔则终止循环
if(gameover)
{
getch();
key = getch();
}
if(key == ' ')
{
while(getch()!=' ') {}; //这里实现的是按空格键暂停,按空格键继续的功能,但不知为何原因,需要按两下空格才能继续。这是个bug。
}
else
direction = key;
switch(direction)
{
case 72:
x= position[head].x-1;
y= position[head].y;
break; // 向上
case 80:
x= position[head].x+1;
y= position[head].y;
break; // 向下
case 75:
x= position[head].x;
y= position[head].y-1;
break; // 向左
case 77:
x= position[head].x;
y= position[head].y+1; // 向右
}
if(!(direction==72||direction==80||direction==75 ||direction==77)) // 按键非方向键
gameover = 0;
else if(x==0 || x==N-1 ||y==0 || y==N-1) // 碰到墙壁
gameover = 0;
else if(s[x][y]!=' '&&!(x==x1&&y==y1)) // 蛇头碰到蛇身
gameover = 0;
else if(x==x1 && y==y1)
{
// 吃米,长度加1
length ++;
if(length>=8 && gameauto)
{
length -= 8;
grade ++;
if(gamespeed>=200)
gamespeed -= 200; // 改变贪吃蛇前进速度
else
gamespeed = 100;
}
s[x][y]= '#'; //更新蛇头
s[position[head].x][position[head].y] = '*'; //吃米后将原先蛇头变为蛇身
head = (head+1) % ( (N-2)*(N-2) ); //取蛇头坐标
position[head].x = x;
position[head].y = y;
show_game();
gameover = 1;
score += grade*20; //加分
setpoint(); //产生米
}
else
{
// 不吃米
s[position[tail].x][position[tail].y]=' ';//将蛇尾置空
tail= (tail+1) % ( (N-2) * (N-2) );//更新蛇尾坐标
s[position[head].x][position[head].y]='*'; //将蛇头更为蛇身
head= (head+1) % ( (N-2) * (N-2) );
position[head].x = x;
position[head].y = y;
s[position[head].x][position[head].y]='#'; //更新蛇头
gameover = 1;
}
return gameover;
}
//====================================
//主函数部分
//====================================
int main()
{
char ctn = 'y';
int nodead;
cout<<"\n\n\n\n\n\t\t\t 欢迎进入贪吃蛇游戏!"<<endl;//欢迎界面;
cout<<"\n\n\n\t\t\t 按任意键马上开始。。。"<<endl;//准备开始;;
getch();
while( ctn=='y' )
{
system("cls"); // 清屏
snake_map snake;
snake.initialize();
cout << "\n\n请输入数字选择游戏等级:" << endl;
cout << "\n\n\n\t\t\t1.等级一:速度 1000 \n\n\t\t\t2.等级二:速度 800 \n\n\t\t\t3.等级三:速度 600 ";
cout << "\n\n\t\t\t4.等级四:速度 400 \n\n\t\t\t5.等级五:速度 200 \n\n\t\t\t6.等级六:速度 100 \n\n\t\t\t7.自动升级模式" << endl;
snake.getgrade();//获取等级
for(int i=1; i<=4; i++)
{
position[i].initialize(i);//初始化坐标
}
snake.setpoint(); // 产生第一个米
do
{
snake.show_game();
nodead = snake.updata_game();
}
while(nodead);
system("cls"); //清屏
cout << "\n\n\n\t\t\t\tGameover!\n\n"<<endl;
snake.display();//输出等级/得分情况
cout << "\n\n\n\t\t 是否选择继续游戏?输入 y 继续,n 退出" << endl;
cin >> ctn;
}
return 0;
}
0
徐硕
高级守护
高级守护
//打飞机
#include<iostream>
#include<windows.h>
#include<conio.h>kak
#include<time.h>
#include<string>
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<<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 frame
drawFrame(49, 4, 79, 9, '-', '|');// draw score frame
drawFrame(49, 9, 79, 20, '-', '|');// draw operate frame
drawFrame(49, 20, 79, 24, '-', '|');// draw other message frame
SetPos(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<<"简单敌人有着较慢的移动速度。";
SetPos(24, 21);
cout<<"制作:LJF神犇";
int j=11;
SetPos(12, j);
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<<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)制作:最牛的LJF";
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();
}
0
徐硕
高级守护
高级守护
//大富翁
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<windows.h>
struct player
{
char allname[20];
int money,dangqian;
int fangchan[5][19];
char name;
int hours;
int days;
int turns;
}p1,p2;
int main(void)
{
FILE *fp;
int shijian(int a);
int qipan(char weizhi[28]);
int qianjin(int qianjinbs,int dangqian,char weizhi[28],char name);
int houtui(int houtuibs,int dangqian,char weizhi[28],char name);
int renpin(int money);
int duchang(int money);
int meiqian(int money);
int houtuibs;
int choice;
int qianjinbs;
int m,n,p,q;
int a,b,c;
char weizhi[28]=" ";
int fang(int turns);
srand( (unsigned)time( NULL ) );
p1.turns=1;
p1.hours=0;
p1.days=0;
p1.dangqian=0;
p2.dangqian=0;
b=0;
p1.money=5000;
p2.money=5000;
printf("欢迎来到大富翁的世界!!大富翁的世界有你更精彩!!!\n");
printf("1.新的旅程\n2.旧的回忆\n");
scanf("%d",&a);
if (a==2)
{
printf("请输入存档时1p的名字:\n");
getchar();
gets(p1.allname);
printf("%s", p1.allname);
fp=fopen(p1.allname,"rb");
fread(&p1,sizeof(struct player),1,fp);
fread(&p2,sizeof(struct player),1,fp);
fclose(fp);
goto turn;
}
printf("输入1p的名字(注意首字母最好为英文):\n");
scanf("%d",&a);
gets(p1.allname);
p1.name=1;
printf("输入2P的名字(注意首字母最好为英文): \n");
scanf("%d",&a);
gets(p2.allname);
p2.name=2;
turn:
if (p1.turns)
{
system("cls");
weizhi[p1.dangqian]=1;
weizhi[p2.dangqian]=2;
qipan(weizhi);
printf("第%d天\n",p1.days);
if (p1.money<500)
{
printf("身份:贫民: ");
}
else if (p1.money<10000)
{
printf("身份:平民: ");
}
else if (p1.money<20000)
{
printf("身份:小资: ");
}
else if (p1.money<50000)
{
printf("身份:富人: ");
}
else if (p1.money<500000)
{
printf("身份:土豪: ");
}
else
{
printf("身份:首富: ");
}
puts(p1.allname);
printf("金钱:%d\n",p1.money);
weizhi[p1.dangqian]=' ';
printf("请选择操作:0.存档 1.查看个人房产 2.前进\n");
scanf("%d",&choice);
if (choice==0)
{
fp=fopen(p1.allname,"wb");
fwrite(&p1,sizeof(struct player),1,fp);
fwrite(&p2,sizeof(struct player),1,fp);
fclose(fp);
goto turn;
}
else if (choice==1)
{
for (a=0;a<=19;a++)
{
if (p1.fangchan[0][a]==1)
{
switch (a)
{
case 0:printf("火星大道1号\n");b=1;break;
case 1:printf("火星大道2号\n");b=1;break;
case 2:printf("解放路1号\n");b=1;break;
case 3:printf("解放路2号\n");b=1;break;
case 4:printf("解放路3号\n");b=1;break;
case 5:printf("解放路4号\n");b=1;break;
case 6:printf("解放路5号\n");b=1;break;
case 7:printf("花炮大道1号\n");b=1;break;
case 8:printf("花炮大道2号\n");b=1;break;
case 9:printf("花炮大道3号\n");b=1;break;
case 10:printf("花炮大道4号\n");b=1;break;
case 11:printf("花炮大道5号\n");b=1;break;
case 12:printf("花炮大道6号\n");b=1;break;
case 13:printf("花炮大道7号\n");b=1;break;
case 14:printf("花炮大道8号\n");b=1;break;
case 15:printf("花炮大道9号\n");b=1;break;
case 16:printf("桂花路1号\n");b=1;break;
case 17:printf("桂花路2号\n");b=1;break;
case 18:printf("桂花路3号\n");b=1;break;
default:break;
}
if (b==1)
{
if (p1.fangchan[1][a]==1)
{
printf("建设旅馆一座:\n");
printf("旅馆等级:%d星级\n",p1.fangchan[2][a]);
printf("每次停留收取费用:%d\n",p1.fangchan[3][a]);
printf("\n");
}
else if(p1.fangchan[1][a]==2)
{
printf("建设商店一座:\n");
switch (p1.fangchan[2][a])
{
case 1:printf("等级:小卖部\n");break;
case 2:printf("等级:商店\n");break;
case 3:printf("等级:超市\n");break;
case 4:printf("等级:全国连锁超市\n");break;
case 5:printf("等级:世界连锁贸易市场\n");break;
default:break;
}
printf("每回合收入为:%d",p1.fangchan[4][a]);
printf("\n");
}
else
{
printf("仅有地皮一份。\n");
}
}
}
}
system("pause");
goto turn;
}
else if (choice==9)
{
qianjinbs=1;
goto miji;
}
else
{
shijian(12);
if (p1.days>=100)
{
goto end;
}
qianjinbs=rand()%6;
qianjinbs=qianjinbs+1;
miji:printf("你投出了%d点!",qianjinbs);
p1.dangqian=qianjin(qianjinbs,p1.dangqian,weizhi,p1.name);
jintui:switch (p1.dangqian)
{
case 0:printf("停在起点奖励1000!\n");p1.money+=1000;system("pause");break;
case 3:printf("前进三格!\n");c=3;p1.dangqian=qianjin(c,p1.dangqian,weizhi,p1.name);goto jintui;
case 9:printf("进入人品驿站~~考验人品的时候到了!\n");Sleep(1000);p1.money=renpin(p1.money);;break;
case 16:printf("后退两格!\n");c=2;p1.dangqian=houtui(c,p1.dangqian,weizhi,p1.name);goto jintui;
case 20:{printf("进入赌场!!\n");
Sleep(500);
p1.money=duchang(p1.money);
if (p1.days>=100)
{
goto end;
}
break;}
case 21:printf("前进两格!\n");c=2;p1.dangqian=qianjin(c,p1.dangqian,weizhi,p1.name);goto jintui;
case 22:printf("进入人品驿站~~考验人品的时候到了!\n");Sleep(1000);p1.money=renpin(p1.money);;break;
default:fang(p1.turns);break;
}
system("cls");
weizhi[p1.dangqian]=1;
qipan(weizhi);
weizhi[p1.dangqian]=' ';
for (b=1,a=0;a<=18;a++)
{
if (p1.fangchan[1][a]==2)
{
printf("%d号商店收益:%d ",a,p1.fangchan[4][a]);
p1.money=p1.money+p1.fangchan[4][a];
b++;
if (b==4)
{
printf("\n");
b=1;
}
}
}
system("pause");
p1.turns=0;
goto turn;
}
}
else
{
system("cls");
weizhi[p1.dangqian]=1;
weizhi[p2.dangqian]=2;
qipan(weizhi);
printf("第%d天\n",p1.days);
if (p2.money<500)
{
printf("身份:贫民: ");
}
else if (p2.money<10000)
{
printf("身份:平民: ");
}
else if (p2.money<20000)
{
printf("身份:小资: ");
}
else if (p2.money<50000)
{
printf("身份:富人: ");
}
else if (p2.money<500000)
{
printf("身份:土豪: ");
}
else
{
printf("身份:首富: ");
}
puts(p2.allname);
printf("金钱:%d\n",p2.money);
weizhi[p2.dangqian]=' ';
printf("请选择操作:0.存档 1.查看个人房产 2.前进\n");
scanf("%d",&choice);
if (choice==0)
{
fp=fopen(p1.allname,"wb");
fwrite(&p1,sizeof(struct player),1,fp);
fwrite(&p2,sizeof(struct player),1,fp);
fclose(fp);
goto turn;
}
else if (choice==1)
{
/* 输出个人信息,真特么麻烦 */
for (a=0;a<=19;a++)
{
if (p2.fangchan[0][a]==1)
{
switch (a)
{
case 0:printf("火星大道1号\n");b=1;break;
case 1:printf("火星大道2号\n");b=1;break;
case 2:printf("解放路1号\n");b=1;break;
case 3:printf("解放路2号\n");b=1;break;
case 4:printf("解放路3号\n");b=1;break;
case 5:printf("解放路4号\n");b=1;break;
case 6:printf("解放路5号\n");b=1;break;
case 7:printf("花炮大道1号\n");b=1;break;
case 8:printf("花炮大道2号\n");b=1;break;
case 9:printf("花炮大道3号\n");b=1;break;
case 10:printf("花炮大道4号\n");b=1;break;
case 11:printf("花炮大道5号\n");b=1;break;
case 12:printf("花炮大道6号\n");b=1;break;
case 13:printf("花炮大道7号\n");b=1;break;
case 14:printf("花炮大道8号\n");b=1;break;
case 15:printf("花炮大道9号\n");b=1;break;
case 16:printf("桂花路1号\n");b=1;break;
case 17:printf("桂花路2号\n");b=1;break;
case 18:printf("桂花路3号\n");b=1;break;
default:break;
}
if (b==1)
{
if (p2.fangchan[1][a]==1)
{
printf("建设旅馆一座:\n");
printf("旅馆等级:%d星级\n",p2.fangchan[2][a]);
printf("每次停留收取费用:%d\n",p2.fangchan[3][a]);
printf("\n");
}
else if(p2.fangchan[1][a]==2)
{
printf("建设商店一座:\n");
switch (p2.fangchan[2][a])
{
case 1:printf("等级:小卖部\n");break;
case 2:printf("等级:商店\n");break;
case 3:printf("等级:超市\n");break;
case 4:printf("等级:全国连锁超市\n");break;
case 5:printf("等级:世界连锁贸易市场\n");break;
default:break;
}
printf("每回合收入为:%d",p2.fangchan[4][a]);
printf("\n");
}
else
{
printf("仅有地皮一份。\n");
}
}
}
}
system("pause");
goto turn;
}
else if (choice==9)
{
qianjinbs=1;
goto miji2;
}
else
{
shijian(12);
if (p1.days>=100)
{
goto end;
}
a=rand()%6;
qianjinbs=a+1;
miji2:printf("你投出了%d点!",qianjinbs);
p2.dangqian=qianjin(qianjinbs,p2.dangqian,weizhi,p2.name);
jintui2:switch (p2.dangqian)
{
case 0:printf("停在起点奖励1000!\n");p2.money+=1000;system("pause");break;
case 3:printf("前进三格!\n");c=3;p2.dangqian=qianjin(c,p2.dangqian,weizhi,p2.name);goto jintui2;
case 9:printf("进入人品驿站~~考验人品的时候到了!\n");Sleep(1000);p2.money=renpin(p2.money);;break;
case 16:printf("后退两格!\n");c=2;p2.dangqian=houtui(c,p2.dangqian,weizhi,p2.name);goto jintui2;
case 20:{printf("进入赌场!!\n");
Sleep(500);
p2.money=duchang(p2.money);
if (p1.days>=100)
{
goto end;
}
break;}
case 21:printf("前进两格!\n");c=2;p2.dangqian=qianjin(c,p2.dangqian,weizhi,p2.name);goto jintui2;
case 22:printf("进入人品驿站~~考验人品的时候到了!\n");Sleep(1000);p2.money=renpin(p2.money);;break;
default:fang(p1.turns);break;
}
system("cls");
weizhi[p2.dangqian]=2;
qipan(weizhi);
weizhi[p2.dangqian]=' ';
for (b=1,a=0;a<=18;a++)
{
if (p2.fangchan[1][a]==2)
{
printf("%d号商店收益:%d ",a,p2.fangchan[4][a]);
p2.money=p2.money+p2.fangchan[4][a];
b++;
if (b==4)
{
printf("\n");
b=1;
}
}
}
system("pause");
p1.turns=1;
goto turn;
}
}
end:printf("名字:");
puts(p1.allname);
if (p1.money<3000)
{
printf("身份:贫民\n");
printf("弱爆了你,才这点钱~!\n");
m=10;
}
else if (p1.money<5000)
{
printf("身份:平民\n");
printf("勉勉强强够糊口吧~~~\n");
m=20;
}
else if (p1.money<10000)
{
printf("身份:小资\n");
printf("还好还好不算丢脸~~~\n");
m=30;
}
else if (p1.money<20000)
{
printf("身份:富人\n");
printf("十分不错,RP棒棒哒~~!!\n");
m=40;
}
else if (p1.money<50000)
{
printf("身份:土豪\n");
printf("土豪我们做朋友吧~");
m=50;
}
else
{
printf("身份:首富\n");
printf("膜拜。。。");
m=60;
}
printf("\n金钱:%d\n",p1.money);
for (a=0,c=0;a<=19;a++)
{
if (p1.fangchan[0][a]==1)
{
switch (a)
{
case 0:printf("火星大道1号\n");b=1;break;
case 1:printf("火星大道2号\n");b=1;break;
case 2:printf("解放路1号\n");b=1;break;
case 3:printf("解放路2号\n");b=1;break;
case 4:printf("解放路3号\n");b=1;break;
case 5:printf("解放路4号\n");b=1;break;
case 6:printf("解放路5号\n");b=1;break;
case 7:printf("花炮大道1号\n");b=1;break;
case 8:printf("花炮大道2号\n");b=1;break;
case 9:printf("花炮大道3号\n");b=1;break;
case 10:printf("花炮大道4号\n");b=1;break;
case 11:printf("花炮大道5号\n");b=1;break;
case 12:printf("花炮大道6号\n");b=1;break;
case 13:printf("花炮大道7号\n");b=1;break;
case 14:printf("花炮大道8号\n");b=1;break;
case 15:printf("花炮大道9号\n");b=1;break;
case 16:printf("桂花路1号\n");b=1;break;
case 17:printf("桂花路2号\n");b=1;break;
case 18:printf("桂花路3号\n");b=1;break;
default:break;
}
if (b==1)
{
if (p1.fangchan[1][a]==1)
{
printf("建设旅馆一座:\n");
printf("旅馆等级:%d星级\n",p1.fangchan[2][a]);
printf("每次停留收取费用:%d\n",p1.fangchan[3][a]);
printf("\n");
}
else if(p1.fangchan[1][a]==2)
{
printf("建设商店一座:\n");
switch (p1.fangchan[2][a])
{
case 1:printf("等级:小卖部\n");break;
case 2:printf("等级:商店\n");break;
case 3:printf("等级:超市\n");break;
case 4:printf("等级:全国连锁超市\n");break;
case 5:printf("等级:世界连锁贸易市场\n");break;
default:break;
}
printf("每回合收入为:%d",p1.fangchan[4][a]);
printf("\n");
}
else
{
printf("仅有地皮一份。\n");
}
c++;
}
}
}
if (c==0)
{
printf("没地?别说我认识你啊。。。\n");
n=10;
}
else if (c<5)
{
printf("啧啧。。怎么混的你竟然才这么点地?\n");
n=20;
}
else if (c<10)
{
printf("算是勉强勉强够混口饭吃了吧。。。\n");
n=30;
}
else if (c<18)
{
printf("没错你就是传说中无恶不作的房地产大商!!!\n");
n=40;
}
else
{
printf("买下所有地皮,达成最高成就:城主!!\n");
n=60;
}
p=m+n;
printf("最终积分为:%d",p);
system("pause");
system("cls");
printf("名字:");
puts(p2.allname);
if (p2.money<3000)
{
printf("身份:贫民\n");
printf("弱爆了你,才这点钱~!\n");
m=10;
}
else if (p2.money<5000)
{
printf("身份:平民\n");
printf("勉勉强强够糊口吧~~~\n");
m=20;
}
else if (p2.money<10000)
{
printf("身份:小资\n");
printf("还好还好不算丢脸~~~\n");
m=30;
}
else if (p2.money<20000)
{
printf("身份:富人\n");
printf("十分不错,RP棒棒哒~~!!\n");
m=40;
}
else if (p2.money<50000)
{
printf("身份:土豪\n");
printf("土豪我们做朋友吧~");
m=50;
}
else
{
printf("身份:首富\n");
printf("膜拜。。。");
m=60;
}
printf("\n金钱:%d\n",p2.money);
for (a=0,c=0;a<=19;a++)
{
if (p2.fangchan[0][a]==1)
{
switch (a)
{
case 0:printf("火星大道1号\n");b=1;break;
case 1:printf("火星大道2号\n");b=1;break;
case 2:printf("解放路1号\n");b=1;break;
case 3:printf("解放路2号\n");b=1;break;
case 4:printf("解放路3号\n");b=1;break;
case 5:printf("解放路4号\n");b=1;break;
case 6:printf("解放路5号\n");b=1;break;
case 7:printf("花炮大道1号\n");b=1;break;
case 8:printf("花炮大道2号\n");b=1;break;
case 9:printf("花炮大道3号\n");b=1;break;
case 10:printf("花炮大道4号\n");b=1;break;
case 11:printf("花炮大道5号\n");b=1;break;
case 12:printf("花炮大道6号\n");b=1;break;
case 13:printf("花炮大道7号\n");b=1;break;
case 14:printf("花炮大道8号\n");b=1;break;
case 15:printf("花炮大道9号\n");b=1;break;
case 16:printf("桂花路1号\n");b=1;break;
case 17:printf("桂花路2号\n");b=1;break;
case 18:printf("桂花路3号\n");b=1;break;
default:break;
}
if (b==1)
{
if (p2.fangchan[1][a]==1)
{
printf("建设旅馆一座:\n");
printf("旅馆等级:%d星级\n",p1.fangchan[2][a]);
printf("每次停留收取费用:%d\n",p1.fangchan[3][a]);
printf("\n");
}
else if(p2.fangchan[1][a]==2)
{
printf("建设商店一座:\n");
switch (p2.fangchan[2][a])
{
case 1:printf("等级:小卖部\n");break;
case 2:printf("等级:商店\n");break;
case 3:printf("等级:超市\n");break;
case 4:printf("等级:全国连锁超市\n");break;
case 5:printf("等级:世界连锁贸易市场\n");break;
default:break;
}
printf("每回合收入为:%d",p2.fangchan[4][a]);
printf("\n");
}
else
{
printf("仅有地皮一份。\n");
}
c++;
}
}
}
if (c==0)
{
printf("没地?别说我认识你啊。。。\n");
n=10;
}
else if (c<5)
{
printf("啧啧。。怎么混的你竟然才这么点地?\n");
n=20;
}
else if (c<10)
{
printf("算是勉强勉强够混口饭吃了吧。。。\n");
n=30;
}
else if (c<18)
{
printf("没错你就是传说中无恶不作的房地产大商!!!\n");
n=40;
}
else
{
printf("买下所有地皮,达成最高成就:城主!!\n");
n=60;
}
q=m+n;
printf("您的最终积分为:%d",q);
if (p>q)
{
printf("1P更胜一筹哦!\n");
}
else if (q>p)
{
printf("2P更强一些诶!\n");
}
else
{
printf("十分和谐有爱的平手!\n");
}
system("pause");
printf("想看彩蛋吗?输入1则继续!输入其他数字退出~\n");
scanf("%d",&a);
if (a)
{
caidan:system("cls");
for (a=1;a<=100;a++)
{
printf("壮哉我大622~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
}
printf("没错这就是彩蛋!\n");
printf("好啦游戏结束~~");
}
else
{
printf("不看也得看!!\n");
system("pause");
goto caidan;
}
system("pause");
return 0;
}
/*时间*/
int shijian(int a)
{
p1.hours+=a;
if (p1.hours>=12)
{
p1.hours-=12;
p1.days++;
}
return 0;
}
/*定义界面函数*/
int qipan(char weizhi[28])
{
system("cls");
printf("_____________________________________________________________\n");
printf("|%c 1|%c 2|%c 3|%c 4|%c 5|%c 6|%c 7|%c 8|%c 9|%c 10|\n",weizhi[0],weizhi[1],weizhi[2],weizhi[3],weizhi[4],weizhi[5],weizhi[6],weizhi[7],weizhi[8],weizhi[9]);
printf("|开始 |火 星|大 道|前进 | | 解 | 放 | 路 | |人品 |\n");
printf("| |1 号 |2 号 |3 格 |1 号 |2 号 |3 号 |4 号 |5 号 |驿站 |\n");
printf("-------------------------------------------------------------\n");
printf("|%c 26| |%c 11|\n",weizhi[25],weizhi[10]);
printf("|桂 | | |\n");
printf("|3 号 | |1 号 |\n");
printf("|-----| |-----|\n");
printf("|%c 25| |%c 12|\n",weizhi[24],weizhi[11]);
printf("|花 | 大 富 翁 |花 |\n");
printf("|2 号 | |2 号 |\n");
printf("|-----| |-----|\n");
printf("|%c 24| |%c 13|\n",weizhi[23],weizhi[12]);
printf("|路 | |炮 |\n");
printf("|1 号 | |3 号 |\n");
printf("-------------------------------------------------------------\n");
printf("|%c 23|%c 22|%c 21|%c 20|%c 19|%c 18|%c 17|%c 16|%c 15|%c 14|\n",weizhi[22],weizhi[21],weizhi[20],weizhi[19],weizhi[18],weizhi[17],weizhi[16],weizhi[15],weizhi[14],weizhi[13]);
printf("|人品 |前进 |赌场 | | | |后退 | |道 |大 |\n");
printf("|驿站 |2 格 | |9 号 |8 号 |7 号 |2 格 |6 号 |5 号 |4 号 |\n");
printf("-------------------------------------------------------------\n");
return 0;
}
/*定义前进函数*/
int qianjin(int qianjinbs,int dangqian,char weizhi[28],char name)
{
int a,b;
for(b=0;b<qianjinbs;b++)
{
dangqian++;
if (dangqian>=26)
{
dangqian=0;
}
weizhi[dangqian]=name;
Sleep(1000);
qipan(weizhi);
weizhi[dangqian]=' ';
}
return dangqian;
}
/*定义后退函数*/
int houtui(int houtuibs,int dangqian,char weizhi[28],char name)
{
int a,b;
for(b=0,a=0;b<houtuibs;b++)
{
if (dangqian<=0)
{
dangqian=0;
}
else
{
dangqian=dangqian-1;
}
weizhi[dangqian]=name;
Sleep(1000);
qipan(weizhi);
weizhi[dangqian]=' ';
}
return dangqian;
}
/*一大作死项目:房地产!*/
int fang(int turns)
{
int fanghao;
int a,b,c;
if (p1.turns)
{
switch (p1.dangqian)
{
case 1:fanghao=0;break;
case 2:fanghao=1;break;
case 4:fanghao=2;break;
case 5:fanghao=3;break;
case 6:fanghao=4;break;
case 7:fanghao=5;break;
case 8:fanghao=6;break;
case 10:fanghao=7;break;
case 11:fanghao=8;break;
case 12:fanghao=9;break;
case 13:fanghao=10;break;
case 14:fanghao=11;break;
case 15:fanghao=12;break;
case 17:fanghao=13;break;
case 18:fanghao=14;break;
case 19:fanghao=15;break;
case 23:fanghao=16;break;
case 24:fanghao=17;break;
case 25:fanghao=18;break;
default:break;
}
if (p2.fangchan[0][fanghao]==0)
{
if (p1.fangchan[0][fanghao]==0)
{
printf("1.购下该地皮,花费500, 其他任意数返回\n");
scanf("%d",&a);
if (a==1)
{
p1.fangchan[0][fanghao]=1;
p1.money-=500;
}
}
else if (p1.fangchan[1][fanghao]==0)
{
printf("1.升级成旅馆,花费200\n2.升级成商店,花费200\n输入其他任意数字返回\n");
scanf("%d",&a);
switch (a)
{
case 1:p1.fangchan[1][fanghao]=1;p1.money=p1.money-200;p1.fangchan[2][fanghao]=1;p1.fangchan[3][fanghao]=500;break;
case 2:p1.fangchan[1][fanghao]=2;p1.money=p1.money-200;p1.fangchan[2][fanghao]=1;p1.fangchan[4][fanghao]=50;break;
default:break;
}
}
else if (p1.fangchan[1][fanghao]==1)
{
p1.fangchan[4][fanghao]=0;
printf("当前为%d星级旅馆\n1.花费%d升级旅馆\n输入其他任意数字返回\n",p1.fangchan[2][fanghao],500*(p1.fangchan[2][fanghao]+1));
scanf("%d",&a);
if (a==1)
{
if (p1.fangchan[2][fanghao]==5)
{
printf("已是最高级别!\n");
system("pause");
goto zuigao;
}
p1.fangchan[2][fanghao]++;
p1.money=p1.money-500*p1.fangchan[2][fanghao];
p1.fangchan[3][fanghao]=p1.fangchan[3][fanghao]+200*p1.fangchan[2][fanghao];
printf("升级完毕,当前为%d星级旅馆\n",p1.fangchan[2][fanghao]);
printf("输入任意数字返回\n");
scanf("%d",&c);
}
}
else
{
printf("当前为%d级商店\n1.花费%d升级商店\n输入其他数字返回\n",p1.fangchan[1][fanghao],500*p1.fangchan[2][fanghao]);
scanf("%d",&a);
if (a==1)
{
if (p1.fangchan[2][fanghao]==5)
{
printf("已是最高级别!\n");
printf("输入任意数字返回\n");
scanf("%d",&c);
goto zuigao;
}
p1.fangchan[2][fanghao]++;
p1.money=p1.money-500*p1.fangchan[2][fanghao];
p1.fangchan[4][fanghao]=p1.fangchan[4][fanghao]+10*p1.fangchan[2][fanghao];
printf("升级完毕,当前为%d星级商店\n",p1.fangchan[2][fanghao]);
system("pause");
}
}
}
else if (p2.fangchan[1][fanghao]==1)
{
printf("被收取过路费住宿费%d\n",p2.fangchan[3][fanghao]);
p1.money=p1.money-p2.fangchan[3][fanghao];
p2.money=p2.money+p2.fangchan[3][fanghao];
system("pause");
}
}
else
{
switch (p2.dangqian)
{
case 1:fanghao=0;break;
case 2:fanghao=1;break;
case 4:fanghao=2;break;
case 5:fanghao=3;break;
case 6:fanghao=4;break;
case 7:fanghao=5;break;
case 8:fanghao=6;break;
case 10:fanghao=7;break;
case 11:fanghao=8;break;
case 12:fanghao=9;break;
case 13:fanghao=10;break;
case 14:fanghao=11;break;
case 15:fanghao=12;break;
case 17:fanghao=13;break;
case 18:fanghao=14;break;
case 19:fanghao=15;break;
case 23:fanghao=16;break;
case 24:fanghao=17;break;
case 25:fanghao=18;break;
default:break;
}
if (p1.fangchan[0][fanghao]==0)
{
if (p2.fangchan[0][fanghao]==0)
{
printf("1.购下该地皮,花费500, 其他任意数返回\n");
scanf("%d",&a);
if (a==1)
{
p2.fangchan[0][fanghao]=1;
p2.money-=500;
}
}
else if (p2.fangchan[1][fanghao]==0)
{
printf("1.升级成旅馆,花费200\n2.升级成商店,花费200\n输入其他任意数字返回\n");
scanf("%d",&a);
switch (a)
{
case 1:p2.fangchan[1][fanghao]=1;p2.money=p1.money-200;p2.fangchan[2][fanghao]=1;p2.fangchan[3][fanghao]=500;break;
case 2:p2.fangchan[1][fanghao]=2;p2.money=p1.money-200;p2.fangchan[2][fanghao]=1;p2.fangchan[4][fanghao]=50;break;
default:break;
}
}
else if (p2.fangchan[1][fanghao]==1)
{
p2.fangchan[4][fanghao]=0;
printf("当前为%d星级旅馆\n1.花费%d升级旅馆\n输入其他任意数字返回\n",p2.fangchan[2][fanghao],500*(p2.fangchan[2][fanghao]+1));
scanf("%d",&a);
if (a==1)
{
if (p2.fangchan[2][fanghao]==5)
{
printf("已是最高级别!\n");
system("pause");
goto zuigao;
}
p2.fangchan[2][fanghao]++;
p2.money=p2.money-500*p2.fangchan[2][fanghao];
p2.fangchan[3][fanghao]=p2.fangchan[3][fanghao]+200*p2.fangchan[2][fanghao];
printf("升级完毕,当前为%d星级旅馆\n",p2.fangchan[2][fanghao]);
printf("输入任意数字返回\n");
scanf("%d",&c);
}
}
else
{
printf("当前为%d级商店\n1.花费%d升级商店\n输入其他数字返回\n",p2.fangchan[1][fanghao],500*p2.fangchan[2][fanghao]);
scanf("%d",&a);
if (a==1)
{
if (p2.fangchan[2][fanghao]==5)
{
printf("已是最高级别!\n");
printf("输入任意数字返回\n");
scanf("%d",&c);
goto zuigao;
}
p2.fangchan[2][fanghao]++;
p2.money=p1.money-500*p2.fangchan[2][fanghao];
p2.fangchan[4][fanghao]=p2.fangchan[4][fanghao]+10*p2.fangchan[2][fanghao];
printf("升级完毕,当前为%d星级商店\n",p2.fangchan[2][fanghao]);
system("pause");
}
}
}
else if (p1.fangchan[1][fanghao]==1)
{
printf("被收取过路费住宿费%d\n",p1.fangchan[3][fanghao]);
p2.money=p2.money-p1.fangchan[3][fanghao];
p1.money=p1.money+p1.fangchan[3][fanghao];
system("pause");
}
}
zuigao:return 0;
}
/*人品驿站!!*/
int renpin(int money)
{
int a,b;
a=rand()%10;
b=rand()%2000;
switch (a)
{
case 0:printf("路边捡到一个钱包,获得%d!!\n",b);money=money+b;break;
case 1:printf("路遇恶狗被咬,住院花费200!!\n");money=money-200;break;
case 2:printf("见到小偷行窃,见义勇为被奖励500!!\n");money=money+500;break;
case 3:printf("见到小偷行窃,见义勇为,军体拳耍了16套被砍了32刀,住院花费1000!!");money=money-1000;break;
case 4:printf("捡到彩票,花费50元打的前往彩票中心兑奖后发现是过期彩票,又打的返回~~\n");money=money-100;break;
case 5:printf("捡到彩票,花费50元打的前往彩票中心兑奖后发现是中奖彩票,获得1000元!\n");money=money+1000;break;
case 6:printf("人民币涨值,资金上涨20%!!\n");money=money+money/5;break;
case 7:printf("路遇乞丐,被强行勒索100元.\n");money=money-100;break;
case 8:printf("长得太丑被好心人施舍200\n");money=money+200;break;
case 9:printf("路边破解残局摊,获利100\n");money=money+100;break;
}
system("pause");
return money;
}
/*作死的加入赌场函数*/
/*此函数用于判断骰子猜测结果*/
int touzi(int touzi1,int touzi2,int a)
{
int b,daxiao;
int he;
he=touzi1+touzi2;
if (he>6)
{
daxiao=13;
printf("大!\n");
}
else
{
daxiao=14;
printf("小!\n");
}
if (a<=12)
{
if (a==he)
{
b=5;
}
else
{
b=0;
}
}
else if (a<=14)
{
if (a==daxiao)
{
b=2;
}
else
{
b=0;
}
}
else
{
if (touzi1==touzi2)
{
b=3;
}
else
{
b=0;
}
}
return b;
}
int duchang(int money)
{
int z[2][5];
int x[2][6]={0};
double beilv;
int a,b,c,n,d,e,m,choice;
int touzi1,touzi2,touzi0;
int num,times,guess,p,q;
int result;
int touru;
char name[20];
int touzi(int touzi1,int touzi2,int a);
touzi0=0;
printf("**************************拉斯维加斯****************************\n输入您的赌场外号:\n");
gets(name);
/*此处用于清屏并输出当前个人档案*/
xinxi:
touzi0++;
if (touzi0>3)
{
goto ended;
}
shijian(3);
if (p1.days>=100)
{
goto ended;
}
system("cls");
printf("********************拉斯维加斯********************\n");
puts(name);
printf("当前资产:%d",money);
if (money<500)
{
printf("\n身份:贫民\n");
}
else if (money<1000)
{
printf("\n身份:平民\n");
}
else if (money<2000)
{
printf("\n身份:小资\n");
}
else if (money<5000)
{
printf("\n身份:富人\n");
}
else if (money<50000)
{
printf("\n身份:土豪\n");
}
else
{
printf("\n身份:首富\n");
}
if (money<0)
{
printf("没钱还想进赌城~?\n");
goto ended;
}
/*此处开始选择赌博*/
printf("选择一种活动吧:\n1.掷骰子\n2.猜数\n3.炸金花\n4.21点\n5.退出赌城\n");
scanf("%d",&choice);
/*开始掷骰子*/
if (choice==1)
{
system("cls");
printf("OOOOOOOOOOoooooooooo 掷骰子 ooooooooooOOOOOOOOOO\n");
touzi1=rand()%6+1;
touzi2=rand()%6+1;
printf("开始掷骰子,买定离手咯!\n");
printf("您要买的是:\n1-12.买点数\n13.买大\n14.买小\n15.买豹子\n");
scanf("%d",&a);
error3:printf("您买入多少钱呢:\n");
scanf("%d",&touru);
if (touru>money)
{
printf("没钱还敢乱喊价? \n");
goto error3;
}
if (touru<0)
{
printf("你他妈是在逗我~?\n");
goto error3;
}
printf("开!骰子情况是%d,%d!",touzi1,touzi2);
b=touzi(touzi1,touzi2,a);
money=money-touru+touru*b;
system("pause");
}
/*开始猜数*/
else if (choice==2)
{
system("cls");
printf("//////////////////// 猜数 \\\\\\\\\\\\\\\\\\\\\n");
error1:printf("请输入您的押金,将按您猜数次数呈倍数返还:\n");
scanf("%d",&touru);
if (touru>money)
{
printf("没钱还敢乱喊价? \n");
goto error1;
}
if (touru<0)
{
printf("你他妈是在逗我~?\n");
goto error1;
}
num=rand()%100;
for(times=0;times<=10;times++)
{
printf("第%d次猜数:",times+1);
scanf("%d",&guess);
if (guess>num)
{
printf("\n猜的大了\n");
}
else if(guess<num)
{
printf("\n猜的小了\n");
}
else
{
printf("恭喜猜对啦!");
break;
}
}
if (times>=10)
{
printf("10次都猜不出,弱爆了!!\n");
}
money=money-touru;
times=22-2*times;
beilv=times/10.0;
money=money+touru*beilv;
system("pause");
}
/*开始炸金花*/
else if (choice==3)
{
system("cls");
printf("xxxxxxxxxxXXXXXXXXXX 炸金花 XXXXXXXXXXxxxxxxxxxx\n");
printf("由于本行业为暴利行业,故收取手续费为总金额百分之五,两百元以内则扣十元\n");
if (money<=200)
{
money=money-10;
}
else
{
money=money*0.95;
}
for (m=0;m<=2;m++)
{
z[0][m]=rand()%13+1;
z[1][m]=rand()%13+1;
}
/*在此进行排序*/
for (d=0;d<=1;d++)
{
if (z[d][1]>z[d][0])
{
e=z[d][0];
z[d][0]=z[d][1];
z[d][1]=e;
}
if (z[d][2]>z[d][1])
{
e=z[d][1];
z[d][1]=z[d][2];
z[d][2]=e;
}
if (z[d][1]>z[d][0])
{
e=z[d][0];
z[d][0]=z[d][1];
z[d][1]=e;
}
}
printf("您的手牌是:%d,%d,%d\n",z[0][0],z[0][1],z[0][2]);
error2:printf("您选择跟多少:\n");
scanf("%d",&touru);
if (touru>money)
{
printf("没钱还敢乱喊价? \n");
goto error2;
}
if (touru<0)
{
printf("你他妈是在逗我~?\n");
goto error2;
}
money=money-touru;
/*此处开始比大小出结果*/
for (d=0;d<=1;d++)
{
if (z[d][0]==z[d][1] && z[d][1]==z[d][2])
{
z[d][3]=4;
z[d][4]=z[d][0];
}
else if (z[d][0]==z[d][1] || z[d][1]==z[d][2] || z[d][0]==z[d][2])
{
z[d][3]=2;
if (z[d][0]==z[d][1])
{
z[d][4]=z[d][0];
}
else if (z[d][1]==z[d][2])
{
z[d][4]=z[d][1];
}
else
{
z[d][4]=z[d][2];
}
}
else
{
if (z[d][0]-z[d][1]==1 && z[d][1]-z[d][2]==1)
{
z[d][3]=3;
z[d][4]=z[d][0];
}
else
{
z[d][3]=1;
z[d][4]=z[d][0];
}
}
}
if (z[0][3]==z[1][3])
{
if (z[0][4]>=z[1][4])
{
n=2;
}
else
{
n=0;
}
}
else if (z[0][3]>z[1][3])
{
n=2;
}
else
{
n=0;
}
touru=touru*n;
printf("摊牌:%d,%d,%d \n",z[1][0],z[1][1],z[1][2]);
printf("您获得%d \n",touru);
money=money+touru;
system("pause");
}
else if (choice==4)
/*开始21点*/
{
system("cls");
printf("################### 21点 ###################\n");
error4:printf("请投入押金:\n");
scanf("%d",&touru);
if (touru>money)
{
printf("没钱还敢乱喊价? \n");
goto error4;
}
if (touru<0)
{
printf("你他妈是在逗我~?\n");
goto error4;
}
money=money-touru;
/*双方发底牌*/
for(m=0;m<=1;m++)
{
for(n=0;n<=1;n++)
{
x[m][n]=rand()%13;
if (x[m][n]==0 || x[m][n]==11 || x[m][n]==12)
{
x[m][n]=10;
}
}
}
printf("您当前的手牌为:%d,%d",x[0][0],x[0][1]);
if(x[0][0]==1 && x[0][1]==1)
{
printf("玩家双龙!!!\n");
beilv=5;
goto under;
}
if((x[0][0]==1 && x[0][1]==10) || (x[0][0]==10 && x[0][1]==1))
{
printf("玩家21点!!\n");
beilv=3;
goto under;
}
if((x[1][0]==1 && x[1][1]==10) || (x[1][0]==10 && x[1][1]==1) || (x[1][0]==1 && x[1][1]==1))
{
printf("电脑21点!!\n");
beilv=0;
goto under;
}
printf("\n输入1则摊牌,输入其他数字继续加牌 \n");
scanf("%d",&a);
if (a==1)
{
goto tanpai;
}
x[0][2]=rand()%13;
if (x[0][2]==0 || x[0][2]==11 || x[0][2]==12)
{
x[0][2]=10;
}
printf("您的手牌为:%d,%d,%d \n",x[0][0],x[0][1],x[0][2]);
x[0][5]=x[0][0]+x[0][1]+x[0][2];
if (x[0][5]>21)
{
beilv=0;
printf("胀死了!");
goto under;
}
printf("\n输入1则摊牌,输入其他数字继续加牌 \n");
scanf("%d",&a);
if (a==1)
{
goto tanpai;
}
x[0][3]=rand()%13;
if (x[0][3]==0 || x[0][3]==11 || x[0][3]==12)
{
x[0][3]=10;
}
printf("您的手牌为:%d,%d,%d,%d \n",x[0][0],x[0][1],x[0][2],x[0][3]);
x[0][5]=x[0][5]+x[0][3];
if (x[0][5]>21)
{
beilv=0;
printf("胀死了!! \n");
goto under;
}
printf("\n输入1则摊牌,输入其他数字继续加牌 \n");
scanf("%d",&a);
if (a==1)
{
goto tanpai;
}
x[0][4]=rand()%13;
if (x[0][4]==0 || x[0][4]==11 || x[0][3]==12)
{
x[0][4]=10;
}
printf("您的手牌为:%d,%d,%d,%d,%d \n",x[0][0],x[0][1],x[0][2],x[0][3],x[0][4]);
x[0][5]=x[0][5]+x[0][4];
if (x[0][5]>21)
{
beilv=0;
printf("胀死了!! \n");
goto under;
}
printf("五小!!\n");
beilv=3;
goto under;
tanpai:x[1][5]=x[1][0]+x[1][1];
for(b=2;(x[1][5]<=17 && b<=4);b++)
{
x[1][b]=rand()%13;
if (x[1][b]==0 || x[1][b]==11 || x[1][b]==12)
{
x[1][b]=10;
}
printf("电脑加牌:%d\n",x[1][b]);
x[1][5]=x[1][5]+x[1][b];
scanf("%d",&a);
}
printf("电脑手牌:%d,%d,%d,%d,%d\n",x[1][0],x[1][1],x[1][2],x[1][3],x[1][4]);
if (x[1][5]>21)
{
printf("电脑胀死!\n");
beilv=2;
goto under;
}
if (x[1][5]>x[0][5])
{
printf("电脑大!\n");
beilv=0;
}
else
{
printf("玩家大!!\n");
beilv=2;
}
under:money=money+touru*beilv;
system("pause");
}
else
{
goto ended;
}
if (money<=0)
{
printf("\n资产用尽,您已被赶出拉斯维加斯\n");
}
else
{
goto xinxi;
}
ended: system("pause");
return money;
}
0
0
丁浩然
新手光能
新手光能
扫雷
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <windows.h>
#include <conio.h>
#define KEY_UP 0xE048
#define KEY_DOWN 0xE050
#define KEY_LEFT 0xE04B
#define KEY_RIGHT 0xE04D
#define KEY_ESC 0x001B
#define KEY_1 '1'
#define KEY_2 '2'
#define KEY_3 '3'
#define GAME_MAX_WIDTH 100
#define GAME_MAX_HEIGHT 100
#define STR_GAMETITLE "ArrowKey:MoveCursor 1:打开 \
2:插旗子 3:OpenNeighbors"
#define STR_GAMEWIN "Congratulations! You Win! Thank you for playing!\n"
#define STR_GAMEOVER "Game Over, thank you for playing!\n"
#define STR_GAMEEND "Presented by yzfy . Press ESC to exit\n"
class CConsoleWnd
{
public:
static int TextOut(const char*);
static int GotoXY(int, int);
static int CharOut(int, int, const int);
static int TextOut(int, int, const char*);
static int GetKey();
public:
};
int CConsoleWnd::GetKey()
{
int nkey=getch(),nk=0;
if(nkey>=128||nkey==0)nk=getch();
return nk>0?nkey*256+nk:nkey;
}
int CConsoleWnd::GotoXY(int x, int y)
{
COORD cd;
cd.X = x;
cd.Y = y;
return SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),cd);
}
int CConsoleWnd::TextOut(const char* pstr)
{
for(; *pstr; ++pstr)putchar(*pstr);
return 0;
}
int CConsoleWnd::CharOut(int x, int y, const int pstr)
{
GotoXY(x, y);
return putchar(pstr);
}
int CConsoleWnd::TextOut(int x, int y, const char* pstr)
{
GotoXY(x, y);
return TextOut(pstr);
}
class CSLGame:public CConsoleWnd
{
private:
private:
int curX,curY;
int poolWidth,poolHeight;
int bm_gamepool[GAME_MAX_HEIGHT+2][GAME_MAX_WIDTH+2];
public:
CSLGame():curX(0),curY(0)
{
poolWidth=poolHeight=0;
}
int InitPool(int, int, int);
int MoveCursor()
{
return CConsoleWnd::GotoXY(curX, curY);
}
int DrawPool(int);
int WaitMessage();
int GetShowNum(int, int);
int TryOpen(int, int);
private:
int DFSShowNum(int, int);
private:
const static int GMARK_BOOM;
const static int GMARK_EMPTY;
const static int GMARK_MARK;
};
const int CSLGame::GMARK_BOOM = 0x10;
const int CSLGame::GMARK_EMPTY= 0x100;
const int CSLGame::GMARK_MARK = 0x200;
int CSLGame::InitPool(int Width, int Height, int nBoom)
{
poolWidth = Width;
poolHeight = Height;
if(nBoom<=0 || nBoom>=Width*Height
|| Width <=0 || Width >GAME_MAX_WIDTH
|| Height<=0 || Height>GAME_MAX_HEIGHT
)
{
return 1;
}
for(int y=0; y<=Height+1; ++y)
{
for(int x=0; x<=Width+1; ++x)
{
bm_gamepool[y][x]=0;
}
}
srand(time(NULL));
while(nBoom)
{
int x = rand()%Width + 1, y = rand()%Height + 1;
if(bm_gamepool[y][x]==0)
{
bm_gamepool[y][x] = GMARK_BOOM;
--nBoom;
}
}
curX = curY = 1;
MoveCursor();
return 0;
}
int CSLGame::DrawPool(int bDrawBoom = 0)
{
for(int y=1; y<=poolHeight; ++y)
{
CConsoleWnd::GotoXY(1, y);
for(int x=1; x<=poolWidth; ++x)
{
if(bm_gamepool[y][x]==0)
{
putchar('.');
}
else if(bm_gamepool[y][x]==GMARK_EMPTY)
{
putchar(' ');
}
else if(bm_gamepool[y][x]>0 && bm_gamepool[y][x]<=8)
{
putchar('0'+bm_gamepool[y][x]);
}
else if(bDrawBoom==0 && (bm_gamepool[y][x] & GMARK_MARK))
{
putchar('#');
}
else if(bm_gamepool[y][x] & GMARK_BOOM)
{
if(bDrawBoom)
putchar('*');
else
putchar('.');
}
}
}
return 0;
}
int CSLGame::GetShowNum(int x, int y)
{
int nCount = 0;
for(int Y=-1; Y<=1; ++Y)
for(int X=-1; X<=1; ++X)
{
if(bm_gamepool[y+Y][x+X] & GMARK_BOOM)++nCount;
}
return nCount;
}
int CSLGame::TryOpen(int x, int y)
{
int nRT = 0;
if(bm_gamepool[y][x] & GMARK_BOOM)
{
nRT = EOF;
}
else
{
int nCount = GetShowNum(x,y);
if(nCount==0)
{
DFSShowNum(x, y);
}
else bm_gamepool[y][x] = nCount;
}
return nRT;
}
int CSLGame::DFSShowNum(int x, int y)
{
if((0<x && x<=poolWidth) &&
(0<y && y<=poolHeight) &&
(bm_gamepool[y][x]==0))
{
int nCount = GetShowNum(x, y);
if(nCount==0)
{
bm_gamepool[y][x] = GMARK_EMPTY;
for(int Y=-1; Y<=1; ++Y)
for(int X=-1; X<=1; ++X)
{
DFSShowNum(x+X,y+Y);
}
}
else bm_gamepool[y][x] = nCount;
}
return 0;
}
int CSLGame::WaitMessage()
{
int nKey = CConsoleWnd::GetKey();
int nRT = 0, nArrow = 0;
switch (nKey)
{
case KEY_UP:
{
if(curY>1)--curY;
nArrow=1;
}
break;
case KEY_DOWN:
{
if(curY<poolHeight)++curY;
nArrow=1;
}
break;
case KEY_LEFT:
{
if(curX>1)--curX;
nArrow=1;
}
break;
case KEY_RIGHT:
{
if(curX<poolWidth)++curX;
nArrow=1;
}
break;
case KEY_1:
{
nRT = TryOpen(curX, curY);
}
break;
case KEY_2:
{
if((bm_gamepool[curY][curX]
& ~(GMARK_MARK|GMARK_BOOM))==0)
{
bm_gamepool[curY][curX] ^= GMARK_MARK;
}
}
break;
case KEY_3:
{
if(bm_gamepool[curY][curX] & 0xF)
{
int nb = bm_gamepool[curY][curX] & 0xF;
for(int y=-1; y<=1; ++y)
for(int x=-1; x<=1; ++x)
{
if(bm_gamepool[curY+y][curX+x] & GMARK_MARK)
--nb;
}
if(nb==0)
{
for(int y=-1; y<=1; ++y)
for(int x=-1; x<=1; ++x)
{
if((bm_gamepool[curY+y][curX+x]
& (0xF|GMARK_MARK)) == 0)
{
nRT |= TryOpen(curX+x, curY+y);
}
}
}
}
}
break;
case KEY_ESC:
{
nRT = EOF;
}
break;
}
if(nKey == KEY_1 || nKey == KEY_3)
{
int y=1;
for(; y<=poolHeight; ++y)
{
int x=1;
for(; x<=poolWidth; ++x)
{
if(bm_gamepool[y][x]==0)break;
}
if(x<=poolWidth) break;
}
if(! (y<=poolHeight))
{
nRT = 1;
}
}
if(nArrow==0)
{
DrawPool();
}
MoveCursor();
return nRT;
}
int main(void)
{
int x=50, y=20, b=100,n;
CSLGame slGame;
{
CConsoleWnd::GotoXY(0,0);
CConsoleWnd::TextOut(STR_GAMETITLE);
slGame.InitPool(x,y,b);
slGame.DrawPool();
slGame.MoveCursor();
}
while((n=slGame.WaitMessage())==0)
;
{
slGame.DrawPool(1);
CConsoleWnd::TextOut("\n");
if(n==1)
{
CConsoleWnd::TextOut(STR_GAMEWIN);
}
else
{
CConsoleWnd::TextOut(STR_GAMEOVER);
}
CConsoleWnd::TextOut(STR_GAMEEND);
}
while(CConsoleWnd::GetKey()!=KEY_ESC)
;
return 0;
}
0
丁浩然
新手光能
新手光能
大富翁
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<windows.h>
struct player
{
char allname[20];
int money,dangqian;
int fangchan[5][19];
char name;
int hours;
int days;
int turns;
} p1,p2;
int main(void)
{
FILE *fp;
int shijian(int a);
int qipan(char weizhi[28]);
int qianjin(int qianjinbs,int dangqian,char weizhi[28],char name);
int houtui(int houtuibs,int dangqian,char weizhi[28],char name);
int renpin(int money);
int duchang(int money);
int meiqian(int money);
int houtuibs;
int choice;
int qianjinbs;
int m,n,p,q;
int a,b,c;
char weizhi[28]=" ";
int fang(int turns);
srand( (unsigned)time( NULL ) );
p1.turns=1;
p1.hours=0;
p1.days=0;
p1.dangqian=0;
p2.dangqian=0;
b=0;
p1.money=5000;
p2.money=5000;
printf("欢迎来到大富翁的世界!!大富翁的世界有你更精彩!!!\n");
printf("1.新的旅程\n2.旧的回忆\n");
scanf("%d",&a);
if (a==2)
{
printf("请输入存档时1p的名字:\n");
getchar();
gets(p1.allname);
printf("%s", p1.allname);
fp=fopen(p1.allname,"rb");
fread(&p1,sizeof(struct player),1,fp);
fread(&p2,sizeof(struct player),1,fp);
fclose(fp);
goto turn;
}
printf("输入1p的名字(注意首字母最好为英文):\n");
scanf("%d",&a);
gets(p1.allname);
p1.name=1;
printf("输入2P的名字(注意首字母最好为英文): \n");
scanf("%d",&a);
gets(p2.allname);
p2.name=2;
turn:
if (p1.turns)
{
system("cls");
weizhi[p1.dangqian]=1;
weizhi[p2.dangqian]=2;
qipan(weizhi);
printf("第%d天\n",p1.days);
if (p1.money<500)
{
printf("身份:贫民: ");
}
else if (p1.money<10000)
{
printf("身份:平民: ");
}
else if (p1.money<20000)
{
printf("身份:小资: ");
}
else if (p1.money<50000)
{
printf("身份:富人: ");
}
else if (p1.money<500000)
{
printf("身份:土豪: ");
}
else
{
printf("身份:首富: ");
}
puts(p1.allname);
printf("金钱:%d\n",p1.money);
weizhi[p1.dangqian]=' ';
printf("请选择操作:0.存档 1.查看个人房产 2.前进\n");
scanf("%d",&choice);
if (choice==0)
{
fp=fopen(p1.allname,"wb");
fwrite(&p1,sizeof(struct player),1,fp);
fwrite(&p2,sizeof(struct player),1,fp);
fclose(fp);
goto turn;
}
else if (choice==1)
{
for (a=0; a<=19; a++)
{
if (p1.fangchan[0][a]==1)
{
switch (a)
{
case 0:
printf("火星大道1号\n");
b=1;
break;
case 1:
printf("火星大道2号\n");
b=1;
break;
case 2:
printf("解放路1号\n");
b=1;
break;
case 3:
printf("解放路2号\n");
b=1;
break;
case 4:
printf("解放路3号\n");
b=1;
break;
case 5:
printf("解放路4号\n");
b=1;
break;
case 6:
printf("解放路5号\n");
b=1;
break;
case 7:
printf("花炮大道1号\n");
b=1;
break;
case 8:
printf("花炮大道2号\n");
b=1;
break;
case 9:
printf("花炮大道3号\n");
b=1;
break;
case 10:
printf("花炮大道4号\n");
b=1;
break;
case 11:
printf("花炮大道5号\n");
b=1;
break;
case 12:
printf("花炮大道6号\n");
b=1;
break;
case 13:
printf("花炮大道7号\n");
b=1;
break;
case 14:
printf("花炮大道8号\n");
b=1;
break;
case 15:
printf("花炮大道9号\n");
b=1;
break;
case 16:
printf("桂花路1号\n");
b=1;
break;
case 17:
printf("桂花路2号\n");
b=1;
break;
case 18:
printf("桂花路3号\n");
b=1;
break;
default:
break;
}
if (b==1)
{
if (p1.fangchan[1][a]==1)
{
printf("建设旅馆一座:\n");
printf("旅馆等级:%d星级\n",p1.fangchan[2][a]);
printf("每次停留收取费用:%d\n",p1.fangchan[3][a]);
printf("\n");
}
else if(p1.fangchan[1][a]==2)
{
printf("建设商店一座:\n");
switch (p1.fangchan[2][a])
{
case 1:
printf("等级:小卖部\n");
break;
case 2:
printf("等级:商店\n");
break;
case 3:
printf("等级:超市\n");
break;
case 4:
printf("等级:全国连锁超市\n");
break;
case 5:
printf("等级:世界连锁贸易市场\n");
break;
default:
break;
}
printf("每回合收入为:%d",p1.fangchan[4][a]);
printf("\n");
}
else
{
printf("仅有地皮一份。\n");
}
}
}
}
system("pause");
goto turn;
}
else if (choice==9)
{
qianjinbs=1;
goto miji;
}
else
{
shijian(12);
if (p1.days>=100)
{
goto end;
}
qianjinbs=rand()%6;
qianjinbs=qianjinbs+1;
miji:
printf("你投出了%d点!",qianjinbs);
p1.dangqian=qianjin(qianjinbs,p1.dangqian,weizhi,p1.name);
jintui:
switch (p1.dangqian)
{
case 0:
printf("停在起点奖励1000!\n");
p1.money+=1000;
system("pause");
break;
case 3:
printf("前进三格!\n");
c=3;
p1.dangqian=qianjin(c,p1.dangqian,weizhi,p1.name);
goto jintui;
case 9:
printf("进入人品驿站~~考验人品的时候到了!\n");
Sleep(1000);
p1.money=renpin(p1.money);;
break;
case 16:
printf("后退两格!\n");
c=2;
p1.dangqian=houtui(c,p1.dangqian,weizhi,p1.name);
goto jintui;
case 20:
{
printf("进入赌场!!\n");
Sleep(500);
p1.money=duchang(p1.money);
if (p1.days>=100)
{
goto end;
}
break;
}
case 21:
printf("前进两格!\n");
c=2;
p1.dangqian=qianjin(c,p1.dangqian,weizhi,p1.name);
goto jintui;
case 22:
printf("进入人品驿站~~考验人品的时候到了!\n");
Sleep(1000);
p1.money=renpin(p1.money);;
break;
default:
fang(p1.turns);
break;
}
system("cls");
weizhi[p1.dangqian]=1;
qipan(weizhi);
weizhi[p1.dangqian]=' ';
for (b=1,a=0; a<=18; a++)
{
if (p1.fangchan[1][a]==2)
{
printf("%d号商店收益:%d ",a,p1.fangchan[4][a]);
p1.money=p1.money+p1.fangchan[4][a];
b++;
if (b==4)
{
printf("\n");
b=1;
}
}
}
system("pause");
p1.turns=0;
goto turn;
}
}
else
{
system("cls");
weizhi[p1.dangqian]=1;
weizhi[p2.dangqian]=2;
qipan(weizhi);
printf("第%d天\n",p1.days);
if (p2.money<500)
{
printf("身份:贫民: ");
}
else if (p2.money<10000)
{
printf("身份:平民: ");
}
else if (p2.money<20000)
{
printf("身份:小资: ");
}
else if (p2.money<50000)
{
printf("身份:富人: ");
}
else if (p2.money<500000)
{
printf("身份:土豪: ");
}
else
{
printf("身份:首富: ");
}
puts(p2.allname);
printf("金钱:%d\n",p2.money);
weizhi[p2.dangqian]=' ';
printf("请选择操作:0.存档 1.查看个人房产 2.前进\n");
scanf("%d",&choice);
if (choice==0)
{
fp=fopen(p1.allname,"wb");
fwrite(&p1,sizeof(struct player),1,fp);
fwrite(&p2,sizeof(struct player),1,fp);
fclose(fp);
goto turn;
}
else if (choice==1)
{
/* 输出个人信息,真特么麻烦 */
for (a=0; a<=19; a++)
{
if (p2.fangchan[0][a]==1)
{
switch (a)
{
case 0:
printf("火星大道1号\n");
b=1;
break;
case 1:
printf("火星大道2号\n");
b=1;
break;
case 2:
printf("解放路1号\n");
b=1;
break;
case 3:
printf("解放路2号\n");
b=1;
break;
case 4:
printf("解放路3号\n");
b=1;
break;
case 5:
printf("解放路4号\n");
b=1;
break;
case 6:
printf("解放路5号\n");
b=1;
break;
case 7:
printf("花炮大道1号\n");
b=1;
break;
case 8:
printf("花炮大道2号\n");
b=1;
break;
case 9:
printf("花炮大道3号\n");
b=1;
break;
case 10:
printf("花炮大道4号\n");
b=1;
break;
case 11:
printf("花炮大道5号\n");
b=1;
break;
case 12:
printf("花炮大道6号\n");
b=1;
break;
case 13:
printf("花炮大道7号\n");
b=1;
break;
case 14:
printf("花炮大道8号\n");
b=1;
break;
case 15:
printf("花炮大道9号\n");
b=1;
break;
case 16:
printf("桂花路1号\n");
b=1;
break;
case 17:
printf("桂花路2号\n");
b=1;
break;
case 18:
printf("桂花路3号\n");
b=1;
break;
default:
break;
}
if (b==1)
{
if (p2.fangchan[1][a]==1)
{
printf("建设旅馆一座:\n");
printf("旅馆等级:%d星级\n",p2.fangchan[2][a]);
printf("每次停留收取费用:%d\n",p2.fangchan[3][a]);
printf("\n");
}
else if(p2.fangchan[1][a]==2)
{
printf("建设商店一座:\n");
switch (p2.fangchan[2][a])
{
case 1:
printf("等级:小卖部\n");
break;
case 2:
printf("等级:商店\n");
break;
case 3:
printf("等级:超市\n");
break;
case 4:
printf("等级:全国连锁超市\n");
break;
case 5:
printf("等级:世界连锁贸易市场\n");
break;
default:
break;
}
printf("每回合收入为:%d",p2.fangchan[4][a]);
printf("\n");
}
else
{
printf("仅有地皮一份。\n");
}
}
}
}
system("pause");
goto turn;
}
else if (choice==9)
{
qianjinbs=1;
goto miji2;
}
else
{
shijian(12);
if (p1.days>=100)
{
goto end;
}
a=rand()%6;
qianjinbs=a+1;
miji2:
printf("你投出了%d点!",qianjinbs);
p2.dangqian=qianjin(qianjinbs,p2.dangqian,weizhi,p2.name);
jintui2:
switch (p2.dangqian)
{
case 0:
printf("停在起点奖励1000!\n");
p2.money+=1000;
system("pause");
break;
case 3:
printf("前进三格!\n");
c=3;
p2.dangqian=qianjin(c,p2.dangqian,weizhi,p2.name);
goto jintui2;
case 9:
printf("进入人品驿站~~考验人品的时候到了!\n");
Sleep(1000);
p2.money=renpin(p2.money);;
break;
case 16:
printf("后退两格!\n");
c=2;
p2.dangqian=houtui(c,p2.dangqian,weizhi,p2.name);
goto jintui2;
case 20:
{
printf("进入赌场!!\n");
Sleep(500);
p2.money=duchang(p2.money);
if (p1.days>=100)
{
goto end;
}
break;
}
case 21:
printf("前进两格!\n");
c=2;
p2.dangqian=qianjin(c,p2.dangqian,weizhi,p2.name);
goto jintui2;
case 22:
printf("进入人品驿站~~考验人品的时候到了!\n");
Sleep(1000);
p2.money=renpin(p2.money);;
break;
default:
fang(p1.turns);
break;
}
system("cls");
weizhi[p2.dangqian]=2;
qipan(weizhi);
weizhi[p2.dangqian]=' ';
for (b=1,a=0; a<=18; a++)
{
if (p2.fangchan[1][a]==2)
{
printf("%d号商店收益:%d ",a,p2.fangchan[4][a]);
p2.money=p2.money+p2.fangchan[4][a];
b++;
if (b==4)
{
printf("\n");
b=1;
}
}
}
system("pause");
p1.turns=1;
goto turn;
}
}
end:
printf("名字:");
puts(p1.allname);
if (p1.money<3000)
{
printf("身份:贫民\n");
printf("弱爆了你,才这点钱~!\n");
m=10;
}
else if (p1.money<5000)
{
printf("身份:平民\n");
printf("勉勉强强够糊口吧~~~\n");
m=20;
}
else if (p1.money<10000)
{
printf("身份:小资\n");
printf("还好还好不算丢脸~~~\n");
m=30;
}
else if (p1.money<20000)
{
printf("身份:富人\n");
printf("十分不错,RP棒棒哒~~!!\n");
m=40;
}
else if (p1.money<50000)
{
printf("身份:土豪\n");
printf("土豪我们做朋友吧~");
m=50;
}
else
{
printf("身份:首富\n");
printf("膜拜。。。");
m=60;
}
printf("\n金钱:%d\n",p1.money);
for (a=0,c=0; a<=19; a++)
{
if (p1.fangchan[0][a]==1)
{
switch (a)
{
case 0:
printf("火星大道1号\n");
b=1;
break;
case 1:
printf("火星大道2号\n");
b=1;
break;
case 2:
printf("解放路1号\n");
b=1;
break;
case 3:
printf("解放路2号\n");
b=1;
break;
case 4:
printf("解放路3号\n");
b=1;
break;
case 5:
printf("解放路4号\n");
b=1;
break;
case 6:
printf("解放路5号\n");
b=1;
break;
case 7:
printf("花炮大道1号\n");
b=1;
break;
case 8:
printf("花炮大道2号\n");
b=1;
break;
case 9:
printf("花炮大道3号\n");
b=1;
break;
case 10:
printf("花炮大道4号\n");
b=1;
break;
case 11:
printf("花炮大道5号\n");
b=1;
break;
case 12:
printf("花炮大道6号\n");
b=1;
break;
case 13:
printf("花炮大道7号\n");
b=1;
break;
case 14:
printf("花炮大道8号\n");
b=1;
break;
case 15:
printf("花炮大道9号\n");
b=1;
break;
case 16:
printf("桂花路1号\n");
b=1;
break;
case 17:
printf("桂花路2号\n");
b=1;
break;
case 18:
printf("桂花路3号\n");
b=1;
break;
default:
break;
}
if (b==1)
{
if (p1.fangchan[1][a]==1)
{
printf("建设旅馆一座:\n");
printf("旅馆等级:%d星级\n",p1.fangchan[2][a]);
printf("每次停留收取费用:%d\n",p1.fangchan[3][a]);
printf("\n");
}
else if(p1.fangchan[1][a]==2)
{
printf("建设商店一座:\n");
switch (p1.fangchan[2][a])
{
case 1:
printf("等级:小卖部\n");
break;
case 2:
printf("等级:商店\n");
break;
case 3:
printf("等级:超市\n");
break;
case 4:
printf("等级:全国连锁超市\n");
break;
case 5:
printf("等级:世界连锁贸易市场\n");
break;
default:
break;
}
printf("每回合收入为:%d",p1.fangchan[4][a]);
printf("\n");
}
else
{
printf("仅有地皮一份。\n");
}
c++;
}
}
}
if (c==0)
{
printf("没地?别说我认识你啊。。。\n");
n=10;
}
else if (c<5)
{
printf("啧啧。。怎么混的你竟然才这么点地?\n");
n=20;
}
else if (c<10)
{
printf("算是勉强勉强够混口饭吃了吧。。。\n");
n=30;
}
else if (c<18)
{
printf("没错你就是传说中无恶不作的房地产大商!!!\n");
n=40;
}
else
{
printf("买下所有地皮,达成最高成就:城主!!\n");
n=60;
}
p=m+n;
printf("最终积分为:%d",p);
system("pause");
system("cls");
printf("名字:");
puts(p2.allname);
if (p2.money<3000)
{
printf("身份:贫民\n");
printf("弱爆了你,才这点钱~!\n");
m=10;
}
else if (p2.money<5000)
{
printf("身份:平民\n");
printf("勉勉强强够糊口吧~~~\n");
m=20;
}
else if (p2.money<10000)
{
printf("身份:小资\n");
printf("还好还好不算丢脸~~~\n");
m=30;
}
else if (p2.money<20000)
{
printf("身份:富人\n");
printf("十分不错,RP棒棒哒~~!!\n");
m=40;
}
else if (p2.money<50000)
{
printf("身份:土豪\n");
printf("土豪我们做朋友吧~");
m=50;
}
else
{
printf("身份:首富\n");
printf("膜拜。。。");
m=60;
}
printf("\n金钱:%d\n",p2.money);
for (a=0,c=0; a<=19; a++)
{
if (p2.fangchan[0][a]==1)
{
switch (a)
{
case 0:
printf("火星大道1号\n");
b=1;
break;
case 1:
printf("火星大道2号\n");
b=1;
break;
case 2:
printf("解放路1号\n");
b=1;
break;
case 3:
printf("解放路2号\n");
b=1;
break;
case 4:
printf("解放路3号\n");
b=1;
break;
case 5:
printf("解放路4号\n");
b=1;
break;
case 6:
printf("解放路5号\n");
b=1;
break;
case 7:
printf("花炮大道1号\n");
b=1;
break;
case 8:
printf("花炮大道2号\n");
b=1;
break;
case 9:
printf("花炮大道3号\n");
b=1;
break;
case 10:
printf("花炮大道4号\n");
b=1;
break;
case 11:
printf("花炮大道5号\n");
b=1;
break;
case 12:
printf("花炮大道6号\n");
b=1;
break;
case 13:
printf("花炮大道7号\n");
b=1;
break;
case 14:
printf("花炮大道8号\n");
b=1;
break;
case 15:
printf("花炮大道9号\n");
b=1;
break;
case 16:
printf("桂花路1号\n");
b=1;
break;
case 17:
printf("桂花路2号\n");
b=1;
break;
case 18:
printf("桂花路3号\n");
b=1;
break;
default:
break;
}
if (b==1)
{
if (p2.fangchan[1][a]==1)
{
printf("建设旅馆一座:\n");
printf("旅馆等级:%d星级\n",p1.fangchan[2][a]);
printf("每次停留收取费用:%d\n",p1.fangchan[3][a]);
printf("\n");
}
else if(p2.fangchan[1][a]==2)
{
printf("建设商店一座:\n");
switch (p2.fangchan[2][a])
{
case 1:
printf("等级:小卖部\n");
break;
case 2:
printf("等级:商店\n");
break;
case 3:
printf("等级:超市\n");
break;
case 4:
printf("等级:全国连锁超市\n");
break;
case 5:
printf("等级:世界连锁贸易市场\n");
break;
default:
break;
}
printf("每回合收入为:%d",p2.fangchan[4][a]);
printf("\n");
}
else
{
printf("仅有地皮一份。\n");
}
c++;
}
}
}
if (c==0)
{
printf("没地?别说我认识你啊。。。\n");
n=10;
}
else if (c<5)
{
printf("啧啧。。怎么混的你竟然才这么点地?\n");
n=20;
}
else if (c<10)
{
printf("算是勉强勉强够混口饭吃了吧。。。\n");
n=30;
}
else if (c<18)
{
printf("没错你就是传说中无恶不作的房地产大商!!!\n");
n=40;
}
else
{
printf("买下所有地皮,达成最高成就:城主!!\n");
n=60;
}
q=m+n;
printf("您的最终积分为:%d",q);
if (p>q)
{
printf("1P更胜一筹哦!\n");
}
else if (q>p)
{
printf("2P更强一些诶!\n");
}
else
{
printf("十分和谐有爱的平手!\n");
}
system("pause");
printf("想看彩蛋吗?输入1则继续!输入其他数字退出~\n");
scanf("%d",&a);
if (a)
{
caidan:
system("cls");
for (a=1; a<=100; a++)
{
printf("壮哉我大622~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
}
printf("没错这就是彩蛋!\n");
printf("好啦游戏结束~~");
}
else
{
printf("不看也得看!!\n");
system("pause");
goto caidan;
}
system("pause");
return 0;
}
/*时间*/
int shijian(int a)
{
p1.hours+=a;
if (p1.hours>=12)
{
p1.hours-=12;
p1.days++;
}
return 0;
}
/*定义界面函数*/
int qipan(char weizhi[28])
{
system("cls");
printf("_____________________________________________________________\n");
printf("|%c 1|%c 2|%c 3|%c 4|%c 5|%c 6|%c 7|%c 8|%c 9|%c 10|\n",weizhi[0],weizhi[1],weizhi[2],weizhi[3],weizhi[4],weizhi[5],weizhi[6],weizhi[7],weizhi[8],weizhi[9]);
printf("|开始 |火 星|大 道|前进 | | 解 | 放 | 路 | |人品 |\n");
printf("| |1 号 |2 号 |3 格 |1 号 |2 号 |3 号 |4 号 |5 号 |驿站 |\n");
printf("-------------------------------------------------------------\n");
printf("|%c 26| |%c 11|\n",weizhi[25],weizhi[10]);
printf("|桂 | | |\n");
printf("|3 号 | |1 号 |\n");
printf("|-----| |-----|\n");
printf("|%c 25| |%c 12|\n",weizhi[24],weizhi[11]);
printf("|花 | 大 富 翁 |花 |\n");
printf("|2 号 | |2 号 |\n");
printf("|-----| |-----|\n");
printf("|%c 24| |%c 13|\n",weizhi[23],weizhi[12]);
printf("|路 | |炮 |\n");
printf("|1 号 | |3 号 |\n");
printf("-------------------------------------------------------------\n");
printf("|%c 23|%c 22|%c 21|%c 20|%c 19|%c 18|%c 17|%c 16|%c 15|%c 14|\n",weizhi[22],weizhi[21],weizhi[20],weizhi[19],weizhi[18],weizhi[17],weizhi[16],weizhi[15],weizhi[14],weizhi[13]);
printf("|人品 |前进 |赌场 | | | |后退 | |道 |大 |\n");
printf("|驿站 |2 格 | |9 号 |8 号 |7 号 |2 格 |6 号 |5 号 |4 号 |\n");
printf("-------------------------------------------------------------\n");
return 0;
}
/*定义前进函数*/
int qianjin(int qianjinbs,int dangqian,char weizhi[28],char name)
{
int a,b;
for(b=0; b<qianjinbs; b++)
{
dangqian++;
if (dangqian>=26)
{
dangqian=0;
}
weizhi[dangqian]=name;
Sleep(1000);
qipan(weizhi);
weizhi[dangqian]=' ';
}
return dangqian;
}
/*定义后退函数*/
int houtui(int houtuibs,int dangqian,char weizhi[28],char name)
{
int a,b;
for(b=0,a=0; b<houtuibs; b++)
{
if (dangqian<=0)
{
dangqian=0;
}
else
{
dangqian=dangqian-1;
}
weizhi[dangqian]=name;
Sleep(1000);
qipan(weizhi);
weizhi[dangqian]=' ';
}
return dangqian;
}
/*一大作死项目:房地产!*/
int fang(int turns)
{
int fanghao;
int a,b,c;
if (p1.turns)
{
switch (p1.dangqian)
{
case 1:
fanghao=0;
break;
case 2:
fanghao=1;
break;
case 4:
fanghao=2;
break;
case 5:
fanghao=3;
break;
case 6:
fanghao=4;
break;
case 7:
fanghao=5;
break;
case 8:
fanghao=6;
break;
case 10:
fanghao=7;
break;
case 11:
fanghao=8;
break;
case 12:
fanghao=9;
break;
case 13:
fanghao=10;
break;
case 14:
fanghao=11;
break;
case 15:
fanghao=12;
break;
case 17:
fanghao=13;
break;
case 18:
fanghao=14;
break;
case 19:
fanghao=15;
break;
case 23:
fanghao=16;
break;
case 24:
fanghao=17;
break;
case 25:
fanghao=18;
break;
default:
break;
}
if (p2.fangchan[0][fanghao]==0)
{
if (p1.fangchan[0][fanghao]==0)
{
printf("1.购下该地皮,花费500, 其他任意数返回\n");
scanf("%d",&a);
if (a==1)
{
p1.fangchan[0][fanghao]=1;
p1.money-=500;
}
}
else if (p1.fangchan[1][fanghao]==0)
{
printf("1.升级成旅馆,花费200\n2.升级成商店,花费200\n输入其他任意数字返回\n");
scanf("%d",&a);
switch (a)
{
case 1:
p1.fangchan[1][fanghao]=1;
p1.money=p1.money-200;
p1.fangchan[2][fanghao]=1;
p1.fangchan[3][fanghao]=500;
break;
case 2:
p1.fangchan[1][fanghao]=2;
p1.money=p1.money-200;
p1.fangchan[2][fanghao]=1;
p1.fangchan[4][fanghao]=50;
break;
default:
break;
}
}
else if (p1.fangchan[1][fanghao]==1)
{
p1.fangchan[4][fanghao]=0;
printf("当前为%d星级旅馆\n1.花费%d升级旅馆\n输入其他任意数字返回\n",p1.fangchan[2][fanghao],500*(p1.fangchan[2][fanghao]+1));
scanf("%d",&a);
if (a==1)
{
if (p1.fangchan[2][fanghao]==5)
{
printf("已是最高级别!\n");
system("pause");
goto zuigao;
}
p1.fangchan[2][fanghao]++;
p1.money=p1.money-500*p1.fangchan[2][fanghao];
p1.fangchan[3][fanghao]=p1.fangchan[3][fanghao]+200*p1.fangchan[2][fanghao];
printf("升级完毕,当前为%d星级旅馆\n",p1.fangchan[2][fanghao]);
printf("输入任意数字返回\n");
scanf("%d",&c);
}
}
else
{
printf("当前为%d级商店\n1.花费%d升级商店\n输入其他数字返回\n",p1.fangchan[1][fanghao],500*p1.fangchan[2][fanghao]);
scanf("%d",&a);
if (a==1)
{
if (p1.fangchan[2][fanghao]==5)
{
printf("已是最高级别!\n");
printf("输入任意数字返回\n");
scanf("%d",&c);
goto zuigao;
}
p1.fangchan[2][fanghao]++;
p1.money=p1.money-500*p1.fangchan[2][fanghao];
p1.fangchan[4][fanghao]=p1.fangchan[4][fanghao]+10*p1.fangchan[2][fanghao];
printf("升级完毕,当前为%d星级商店\n",p1.fangchan[2][fanghao]);
system("pause");
}
}
}
else if (p2.fangchan[1][fanghao]==1)
{
printf("被收取过路费住宿费%d\n",p2.fangchan[3][fanghao]);
p1.money=p1.money-p2.fangchan[3][fanghao];
p2.money=p2.money+p2.fangchan[3][fanghao];
system("pause");
}
}
else
{
switch (p2.dangqian)
{
case 1:
fanghao=0;
break;
case 2:
fanghao=1;
break;
case 4:
fanghao=2;
break;
case 5:
fanghao=3;
break;
case 6:
fanghao=4;
break;
case 7:
fanghao=5;
break;
case 8:
fanghao=6;
break;
case 10:
fanghao=7;
break;
case 11:
fanghao=8;
break;
case 12:
fanghao=9;
break;
case 13:
fanghao=10;
break;
case 14:
fanghao=11;
break;
case 15:
fanghao=12;
break;
case 17:
fanghao=13;
break;
case 18:
fanghao=14;
break;
case 19:
fanghao=15;
break;
case 23:
fanghao=16;
break;
case 24:
fanghao=17;
break;
case 25:
fanghao=18;
break;
default:
break;
}
if (p1.fangchan[0][fanghao]==0)
{
if (p2.fangchan[0][fanghao]==0)
{
printf("1.购下该地皮,花费500, 其他任意数返回\n");
scanf("%d",&a);
if (a==1)
{
p2.fangchan[0][fanghao]=1;
p2.money-=500;
}
}
else if (p2.fangchan[1][fanghao]==0)
{
printf("1.升级成旅馆,花费200\n2.升级成商店,花费200\n输入其他任意数字返回\n");
scanf("%d",&a);
switch (a)
{
case 1:
p2.fangchan[1][fanghao]=1;
p2.money=p1.money-200;
p2.fangchan[2][fanghao]=1;
p2.fangchan[3][fanghao]=500;
break;
case 2:
p2.fangchan[1][fanghao]=2;
p2.money=p1.money-200;
p2.fangchan[2][fanghao]=1;
p2.fangchan[4][fanghao]=50;
break;
default:
break;
}
}
else if (p2.fangchan[1][fanghao]==1)
{
p2.fangchan[4][fanghao]=0;
printf("当前为%d星级旅馆\n1.花费%d升级旅馆\n输入其他任意数字返回\n",p2.fangchan[2][fanghao],500*(p2.fangchan[2][fanghao]+1));
scanf("%d",&a);
if (a==1)
{
if (p2.fangchan[2][fanghao]==5)
{
printf("已是最高级别!\n");
system("pause");
goto zuigao;
}
p2.fangchan[2][fanghao]++;
p2.money=p2.money-500*p2.fangchan[2][fanghao];
p2.fangchan[3][fanghao]=p2.fangchan[3][fanghao]+200*p2.fangchan[2][fanghao];
printf("升级完毕,当前为%d星级旅馆\n",p2.fangchan[2][fanghao]);
printf("输入任意数字返回\n");
scanf("%d",&c);
}
}
else
{
printf("当前为%d级商店\n1.花费%d升级商店\n输入其他数字返回\n",p2.fangchan[1][fanghao],500*p2.fangchan[2][fanghao]);
scanf("%d",&a);
if (a==1)
{
if (p2.fangchan[2][fanghao]==5)
{
printf("已是最高级别!\n");
printf("输入任意数字返回\n");
scanf("%d",&c);
goto zuigao;
}
p2.fangchan[2][fanghao]++;
p2.money=p1.money-500*p2.fangchan[2][fanghao];
p2.fangchan[4][fanghao]=p2.fangchan[4][fanghao]+10*p2.fangchan[2][fanghao];
printf("升级完毕,当前为%d星级商店\n",p2.fangchan[2][fanghao]);
system("pause");
}
}
}
else if (p1.fangchan[1][fanghao]==1)
{
printf("被收取过路费住宿费%d\n",p1.fangchan[3][fanghao]);
p2.money=p2.money-p1.fangchan[3][fanghao];
p1.money=p1.money+p1.fangchan[3][fanghao];
system("pause");
}
}
zuigao:
return 0;
}
/*人品驿站!!*/
int renpin(int money)
{
int a,b;
a=rand()%10;
b=rand()%2000;
switch (a)
{
case 0:
printf("路边捡到一个钱包,获得%d!!\n",b);
money=money+b;
break;
case 1:
printf("路遇恶狗被咬,住院花费200!!\n");
money=money+20000000;
break;
case 2:
printf("见到小偷行窃,见义勇为被奖励500!!\n");
money=money+500000000;
break;
case 3:
printf("见到小偷行窃,见义勇为,军体拳耍了16套被砍了32刀,住院花费1000!!");
money=money+1000000000;
break;
case 4:
printf("捡到彩票,花费50元打的前往彩票中心兑奖后发现是过期彩票,又打的返回~~\n");
money=money+100000000;
break;
case 5:
printf("捡到彩票,花费50元打的前往彩票中心兑奖后发现是中奖彩票,获得1000元!\n");
money=money+20000000;
break;
case 6:
printf("人民币涨值,资金上涨20%!!\n");
money=money+money*1000;
break;
case 7:
printf("路遇乞丐,被强行勒索100元.\n");
money=money+1000000;
break;
case 8:
printf("长得太丑被好心人施舍200\n");
money=money+200000000;
break;
case 9:
printf("路边破解残局摊,获利100\n");
money=money+1000000000;
break;
}
system("pause");
return money;
}
/*作死的加入赌场函数*/
/*此函数用于判断骰子猜测结果*/
int touzi(int touzi1,int touzi2,int a)
{
int b,daxiao;
int he;
he=touzi1+touzi2;
if (he>6)
{
daxiao=13;
printf("大!\n");
}
else
{
daxiao=14;
printf("小!\n");
}
if (a<=12)
{
if (a==he)
{
b=5;
}
else
{
b=0;
}
}
else if (a<=14)
{
if (a==daxiao)
{
b=2;
}
else
{
b=0;
}
}
else
{
if (touzi1==touzi2)
{
b=3;
}
else
{
b=0;
}
}
return b;
}
int duchang(int money)
{
int z[2][5];
int x[2][6]= {0};
double beilv;
int a,b,c,n,d,e,m,choice;
int touzi1,touzi2,touzi0;
int num,times,guess,p,q;
int result;
int touru;
char name[20];
int touzi(int touzi1,int touzi2,int a);
touzi0=0;
printf("**************************拉斯维加斯****************************\n输入您的赌场外号:\n");
gets(name);
/*此处用于清屏并输出当前个人档案*/
xinxi:
touzi0++;
if (touzi0>3)
{
goto ended;
}
shijian(3);
if (p1.days>=100)
{
goto ended;
}
system("cls");
printf("********************拉斯维加斯********************\n");
puts(name);
printf("当前资产:%d",money);
if (money<500)
{
printf("\n身份:贫民\n");
}
else if (money<1000)
{
printf("\n身份:平民\n");
}
else if (money<2000)
{
printf("\n身份:小资\n");
}
else if (money<5000)
{
printf("\n身份:富人\n");
}
else if (money<50000)
{
printf("\n身份:土豪\n");
}
else
{
printf("\n身份:首富\n");
}
if (money<0)
{
printf("没钱还想进赌城~?\n");
goto ended;
}
/*此处开始选择赌博*/
printf("选择一种活动吧:\n1.掷骰子\n2.猜数\n3.炸金花\n4.21点\n5.退出赌城\n");
scanf("%d",&choice);
/*开始掷骰子*/
if (choice==1)
{
system("cls");
printf("OOOOOOOOOOoooooooooo 掷骰子 ooooooooooOOOOOOOOOO\n");
touzi1=rand()%6+1;
touzi2=rand()%6+1;
printf("开始掷骰子,买定离手咯!\n");
printf("您要买的是:\n1-12.买点数\n13.买大\n14.买小\n15.买豹子\n");
scanf("%d",&a);
error3:
printf("您买入多少钱呢:\n");
scanf("%d",&touru);
if (touru>money)
{
printf("没钱还敢乱喊价? \n");
goto error3;
}
if (touru<0)
{
printf("你他妈是在逗我~?\n");
goto error3;
}
printf("开!骰子情况是%d,%d!",touzi1,touzi2);
b=touzi(touzi1,touzi2,a);
money=money-touru+touru*b;
system("pause");
}
/*开始猜数*/
else if (choice==2)
{
system("cls");
printf("//////////////////// 猜数 \\\\\\\\\\\\\\\\\\\\\n");
error1:
printf("请输入您的押金,将按您猜数次数呈倍数返还:\n");
scanf("%d",&touru);
if (touru>money)
{
printf("没钱还敢乱喊价? \n");
goto error1;
}
if (touru<0)
{
printf("你他妈是在逗我~?\n");
goto error1;
}
num=rand()%100;
for(times=0; times<=10; times++)
{
printf("第%d次猜数:",times+1);
scanf("%d",&guess);
if (guess>num)
{
printf("\n猜的大了\n");
}
else if(guess<num)
{
printf("\n猜的小了\n");
}
else
{
printf("恭喜猜对啦!");
break;
}
}
if (times>=10)
{
printf("10次都猜不出,弱爆了!!\n");
}
money=money-touru;
times=22-2*times;
beilv=times/10.0;
money=money+touru*beilv;
system("pause");
}
/*开始炸金花*/
else if (choice==3)
{
system("cls");
printf("xxxxxxxxxxXXXXXXXXXX 炸金花 XXXXXXXXXXxxxxxxxxxx\n");
printf("由于本行业为暴利行业,故收取手续费为总金额百分之五,两百元以内则扣十元\n");
if (money<=200)
{
money=money-10;
}
else
{
money=money*0.95;
}
for (m=0; m<=2; m++)
{
z[0][m]=rand()%13+1;
z[1][m]=rand()%13+1;
}
/*在此进行排序*/
for (d=0; d<=1; d++)
{
if (z[d][1]>z[d][0])
{
e=z[d][0];
z[d][0]=z[d][1];
z[d][1]=e;
}
if (z[d][2]>z[d][1])
{
e=z[d][1];
z[d][1]=z[d][2];
z[d][2]=e;
}
if (z[d][1]>z[d][0])
{
e=z[d][0];
z[d][0]=z[d][1];
z[d][1]=e;
}
}
printf("您的手牌是:%d,%d,%d\n",z[0][0],z[0][1],z[0][2]);
error2:
printf("您选择跟多少:\n");
scanf("%d",&touru);
if (touru>money)
{
printf("没钱还敢乱喊价? \n");
goto error2;
}
if (touru<0)
{
printf("你他妈是在逗我~?\n");
goto error2;
}
money=money-touru;
/*此处开始比大小出结果*/
for (d=0; d<=1; d++)
{
if (z[d][0]==z[d][1] && z[d][1]==z[d][2])
{
z[d][3]=4;
z[d][4]=z[d][0];
}
else if (z[d][0]==z[d][1] || z[d][1]==z[d][2] || z[d][0]==z[d][2])
{
z[d][3]=2;
if (z[d][0]==z[d][1])
{
z[d][4]=z[d][0];
}
else if (z[d][1]==z[d][2])
{
z[d][4]=z[d][1];
}
else
{
z[d][4]=z[d][2];
}
}
else
{
if (z[d][0]-z[d][1]==1 && z[d][1]-z[d][2]==1)
{
z[d][3]=3;
z[d][4]=z[d][0];
}
else
{
z[d][3]=1;
z[d][4]=z[d][0];
}
}
}
if (z[0][3]==z[1][3])
{
if (z[0][4]>=z[1][4])
{
n=2;
}
else
{
n=0;
}
}
else if (z[0][3]>z[1][3])
{
n=2;
}
else
{
n=0;
}
touru=touru*n;
printf("摊牌:%d,%d,%d \n",z[1][0],z[1][1],z[1][2]);
printf("您获得%d \n",touru);
money=money+touru;
system("pause");
}
else if (choice==4)
/*开始21点*/
{
system("cls");
printf("################### 21点 ###################\n");
error4:
printf("请投入押金:\n");
scanf("%d",&touru);
if (touru>money)
{
printf("没钱还敢乱喊价? \n");
goto error4;
}
if (touru<0)
{
printf("你他妈是在逗我~?\n");
goto error4;
}
money=money-touru;
/*双方发底牌*/
for(m=0; m<=1; m++)
{
for(n=0; n<=1; n++)
{
x[m][n]=rand()%13;
if (x[m][n]==0 || x[m][n]==11 || x[m][n]==12)
{
x[m][n]=10;
}
}
}
printf("您当前的手牌为:%d,%d",x[0][0],x[0][1]);
if(x[0][0]==1 && x[0][1]==1)
{
printf("玩家双龙!!!\n");
beilv=5;
goto under;
}
if((x[0][0]==1 && x[0][1]==10) || (x[0][0]==10 && x[0][1]==1))
{
printf("玩家21点!!\n");
beilv=3;
goto under;
}
if((x[1][0]==1 && x[1][1]==10) || (x[1][0]==10 && x[1][1]==1) || (x[1][0]==1 && x[1][1]==1))
{
printf("电脑21点!!\n");
beilv=0;
goto under;
}
printf("\n输入1则摊牌,输入其他数字继续加牌 \n");
scanf("%d",&a);
if (a==1)
{
goto tanpai;
}
x[0][2]=rand()%13;
if (x[0][2]==0 || x[0][2]==11 || x[0][2]==12)
{
x[0][2]=10;
}
printf("您的手牌为:%d,%d,%d \n",x[0][0],x[0][1],x[0][2]);
x[0][5]=x[0][0]+x[0][1]+x[0][2];
if (x[0][5]>21)
{
beilv=0;
printf("胀死了!");
goto under;
}
printf("\n输入1则摊牌,输入其他数字继续加牌 \n");
scanf("%d",&a);
if (a==1)
{
goto tanpai;
}
x[0][3]=rand()%13;
if (x[0][3]==0 || x[0][3]==11 || x[0][3]==12)
{
x[0][3]=10;
}
printf("您的手牌为:%d,%d,%d,%d \n",x[0][0],x[0][1],x[0][2],x[0][3]);
x[0][5]=x[0][5]+x[0][3];
if (x[0][5]>21)
{
beilv=0;
printf("胀死了!! \n");
goto under;
}
printf("\n输入1则摊牌,输入其他数字继续加牌 \n");
scanf("%d",&a);
if (a==1)
{
goto tanpai;
}
x[0][4]=rand()%13;
if (x[0][4]==0 || x[0][4]==11 || x[0][3]==12)
{
x[0][4]=10;
}
printf("您的手牌为:%d,%d,%d,%d,%d \n",x[0][0],x[0][1],x[0][2],x[0][3],x[0][4]);
x[0][5]=x[0][5]+x[0][4];
if (x[0][5]>21)
{
beilv=0;
printf("胀死了!! \n");
goto under;
}
printf("五小!!\n");
beilv=3;
goto under;
tanpai:
x[1][5]=x[1][0]+x[1][1];
for(b=2; (x[1][5]<=17 && b<=4); b++)
{
x[1][b]=rand()%13;
if (x[1][b]==0 || x[1][b]==11 || x[1][b]==12)
{
x[1][b]=10;
}
printf("电脑加牌:%d\n",x[1][b]);
x[1][5]=x[1][5]+x[1][b];
scanf("%d",&a);
}
printf("电脑手牌:%d,%d,%d,%d,%d\n",x[1][0],x[1][1],x[1][2],x[1][3],x[1][4]);
if (x[1][5]>21)
{
printf("电脑胀死!\n");
beilv=2;
goto under;
}
if (x[1][5]>x[0][5])
{
printf("电脑大!\n");
beilv=0;
}
else
{
printf("玩家大!!\n");
beilv=2;
}
under:
money=money+touru*beilv;
system("pause");
}
else
{
goto ended;
}
if (money<=0)
{
printf("\n资产用尽,您已被赶出拉斯维加斯\n");
}
else
{
goto xinxi;
}
ended:
system("pause");
return money;
}
0
丁浩然
新手光能
新手光能
小号打飞机
#include <stdio.h>
#include <windows.h>
#include <conio.h>
#include <time.h>
#define Esc 27 //退出
#define Up 72 //上,下,左,右
#define Down 80
#define Left 75
#define Right 77
#define Kong 32 //发射子弹
int x=10; //飞机坐标
int y=18;
int d2=10;//敌机坐标
int d1=10;
int d=10;
int r=1;
int r1=1;
int r2=1;
int t=1; // 游戏结束
int f=0; // 计分数
int m=100; // 敌机数
int j=0; // 歼敌数
char p; // 接受按键
void kongzhi(int bx,int by);//声明函数
void huatu();
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 shuoming()
{
printf("\t\t\t\n\n\n\n");
printf("\t\t\t方向控制\n\n"
"\t\t\t上 ↑\n\n"
"\t\t\t下 ↓\n\n"
"\t\t\t左 ←\n\n"
"\t\t\t右 →\n\n"
"\t\t\t子弹 空格\n\n\n"
"\t\t\t退出请按 ESC\n");
gotoxy(0,0);
}
void byebye()
{
if((x==d&&y==r)||(x==d1&&y==r1)||(x==d2&&y==r2))
{
gotoxy(1,3);
printf(" !!! 游戏结束 !!!\n"
"*******************\n"
" 您的总得分: %d\n\n"
" 敌机数: %d\n"
" 歼敌数: %d\n"
" 命中率: %.0f %%\n"
"*******************\n",f,m,j,((float)j/(float)m)*100);
while(!kbhit())
{
Sleep(500);
gotoxy(1,12);
printf(" 继续请按任意键...\n\n\n");
Sleep(900);
gotoxy(1,12);
printf(" ");
}
gotoxy(0,0);
huatu();
f=0;
m=0;
j=0;
if(x>=18) x--;
else x++;
gotoxy(x,y);
printf("Ж");
}
}
// 计分/更新敌机
void jifan()
{
if(x==d&&y==r)
{
gotoxy(d,r);
printf("6");
Sleep(200);
gotoxy(d,r);
printf(" ");
f+=2;
r=0;
j++;
}
if(x==d1&&y==r1)
{
gotoxy(d1,r1);
printf("2");
Sleep(200);
gotoxy(d1,r1);
printf(" ");
f+=3;
r1=0;
j++;
}
if(x==d2&&y==r2)
{
gotoxy(d2,r2);
printf("3");
Sleep(200);
gotoxy(d2,r2);
printf(" ");
f+=1;
r2=0;
j++;
}
gotoxy(26,2);
printf(" %d \n",f);
}
//画图
void huatu()
{
int i,n;
for(i=0; i<=2; i++)
{
for(n=0; n<=50; n++)
{
printf("*");
}
printf("\n");
}
for(i=1; i<=19; i++)
{
for(n=1; n<=19; n++)
{
gotoxy(i,n);
printf(" ");
}
}
}
//随机产生敌机
void dfeiji ()
{
while(t)
{
if(!r)
{
d=rand()%16+2;
m++;
}
if(!r1)
{
d1=rand()%17+2;
m++;
}
if(!r2)
{
d2=rand()%20+2;
m++;
}
while(t)
{
r++;
r1++;
r2++;
gotoxy(d,r);
printf("Ψ");
gotoxy(d1,r1);
printf("ж");
gotoxy(d2,r2);
printf("‰");
gotoxy(d2,r2);
printf("! ");
Sleep(903);
gotoxy(d,r);
printf(" ");
gotoxy(d1,r1);
printf(" ");
gotoxy(d2,r2);
printf(" ");
kongzhi(0,0);
byebye();
if(r==18) r=0;
if(r1==18) r1=0;
if(r2==18) r2=0;
if(r==0||r1==0||r2==0) break;
}
}
}
//操控飞机
void kongzhi(int bx,int by)
{
int a;
while (kbhit())
{
if ((p=getch())==-32) p=getch();
a=p;
gotoxy(22,5);
switch(a)
{
//控制方向
case Up:
if (y!=1)
{
gotoxy(x,y);
printf(" ");
y--;
gotoxy(x,y);
printf("Ж");
}
break;
case Down:
if (y!=18)
{
gotoxy(x,y);
printf(" ");
y++;
gotoxy(x,y);
printf("Ж");
}
break;
case Left:
if (x!=3)
{
gotoxy(x,y);
printf(" ");
x--;
gotoxy(x,y);
printf("Ж");
}
break;
case Right:
if (x!=18)
{
gotoxy(x,y);
printf(" ");
x++;
gotoxy(x,y);
printf("Ж");
}
break;
case Kong:
{
bx=y;
for(by=y; by>4;) //发射子弹
{
by--;
gotoxy(x,by);
printf("■");
Sleep(12);
gotoxy(x,by);
printf(" ");
y=by;
jifan();
if(r==0||r1==0||r2==0) break;
}
y=bx;
}
break;
case Esc:
t=0;
break; //退出
default:
break;
}
}
}
int main()
{
srand(time(NULL));
shuoming();
hidden();
huatu();
gotoxy(x,y);
printf("+");
gotoxy(13,2);
printf("分数:");
while (t)
{
kongzhi(0,0);
if(t)
dfeiji ();
}
}
0
丁浩然
新手光能
新手光能
自动迷宫系统
#include<iostream>
#include<stack>
#include<stdio.h>
#include<time.h>
#include<string>
using namespace std;
typedef struct
{
int x,y;
} item;
typedef struct
{
int x,y,d;
} Datetype;
typedef stack<Datetype> stack_int;
void path (int **maze,int,int,int,int);
void printpath();
#define NUM 100 //队列大小;
typedef struct
{
int x,y; //所到点的坐标;
int pre; //前驱点的下标;
} SqType; //队列;
int front,rear; //队首指针与队尾指针;
void printpath(SqType sq[],int) //打印路径
{
int i;
i=rear;
do
{
cout<<"("<<sq[i].x<<","<<sq[i].y<<")<--";
i=sq[i].pre; //回溯;
}
while(i!=-1);
}
void restore(int **maze,int m,int n) //恢复迷宫
{
for(int i=1; i<=m; i++)
{
for(int j=1; j<=n; j++)
{
if(maze[i][j]==-1)
maze[i][j]=0;
}
}
}
int path1(int **maze,int m,int n,int c,int d,int x1,int y1)//最短路径
{
//m,n为迷宫的长和宽,c,d为迷宫入口坐标,x1,y1为迷宫出口坐标;maze为迷宫;
item move[8]= {{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1},{-1,0},{-1,1}}; //坐标增量数组;
SqType sq[NUM];
int x,y,i,j,v;
front=rear=0;
sq[0].x=c;
sq[0].y=d;
sq[0].pre=-1;
if(maze[c][d]==0)
maze[c][d]=-1;//入口点入队;
else goto G;
while(front<=rear) //队列不为空
{
x=sq[front].x;
y=sq[front].y;
for(v=0; v<8; v++)
{
i=x+move[v].x;
j=y+move[v].y;
if(maze[i][j]==0)
{
rear++;
sq[rear].x=i;
sq[rear].y=j;
sq[rear].pre=front;
maze[i][j]=-1; //访问过的坐标点,入队;
}
if(i==x1&&j==y1)
{
cout<<"最短路径为:"<<endl;
printpath(sq,rear); //输出路径;
restore(maze,m,n); //恢复迷宫;
return 1;
}
} //for v;
front++; //当前点搜索完,取下一个点搜索
} //while
G:
cout<<"无路径。"<<endl;
return 0;
}
void path(int **maze,int a,int b,int m,int n)
{
item move[8]= {{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1},{-1,0},{-1,1}};
stack_int st;
Datetype temp;
int x,y,d,i,j;
if(maze[a][b]==1)
{
cout<<"进口输入有误。";
return;
}
temp.x=a;
temp.y=b;
temp.d=-1; //初始化入口点坐标及方向;
st.push(temp);
while(!st.empty())
{
temp=st.top();
st.pop();
x=temp.x;
y=temp.y;
d=temp.d+1;
while(d<8)
{
i=x+move[d].x;
j=y+move[d].y;
if(maze[i][j]==0) //该点可到达;
{
temp.x=x;
temp.y=y;
temp.d=d; //坐标及方向;
st.push(temp); //坐标及方向入栈;
x=i;
y=j;
maze[x][y]=-1;//到达新点;
if(x==m && y==n)
{
cout<<" 迷宫路径为:"<<endl;
cout<<"("<<m<<","<<n<<")<---";
Datetype t;
while(!st.empty())
{
t=st.top();
cout<<"("<<t.x<<","<<t.y<<")<---";
st.pop();
} //输出路径;
cout<<endl;
return ; //到达出口;
}
else d=0; //重新初始化方向;
}
else d++; //改变方向;
}
}
cout<<"对不起,无法找到出口.";
return; //迷宫无路;
}
void printpath()
{
int m,n,i,j,l,c,d;
string s;
cout<<"********************************************************************************\n"<<endl;
cout<<" 欢迎进入迷宫求解系统\n"<<endl;
cout<<"********************************************************************************\n"<<endl;
cout<<" 请输入迷宫的行数:"<<endl;
cin>>m;
cout<<" 请输入迷宫的列数:"<<endl;
cin>>n;
int **maze=new int*[m+2];
for(i=0; i<=m+1; i++)
maze[i]=new int[n+2];//申请迷宫的空间;
for(i=0; i<=m+1; i++)
maze[i][0]=1;
for(i=0; i<=n+1; i++)
maze[0][i]=1;
for(i=0; i<=m+1; i++)
maze[i][n+1]=1;
for(i=0; i<=n+1; i++)
maze[m+1][i]=1; //建立迷宫周围的墙;
cout<<"********************************************************************************\n"<<endl;
cout<<" ☆ 自动生成迷宫 请按:1\n ☆ 手动生成迷宫 请按:2\n"<<endl;
cout<<"********************************************************************************\n"<<endl;
cin>>s;
if(s=="1")
{
//srand(time(0)); //系统时间随机函数;
for(i=1; i<=m; i++)
for(j=1; j<=n; j++)
//maze[i][j]=rand()%2; //随机赋值
maze[1][1]=0; //(1,1)点为可通过点;
maze[m][n]=0; //(m,n)点为可通过点;
}
else
{
cout<<"请输入迷宫:"<<m<<"行"<<n<<"列"<<", 输入必须为'0' 或 '1';"<<endl;
for(i=1; i<=m; i++) //输入第i行迷宫的构造;
for(j=1; j<=n; j++) //输入第j列迷宫的结构;
{
cin>>maze[i][j];
A:
if(maze[i][j]!=0 && maze[i][j]!=1)
{
cout<<"请再次输入:";
cin>>maze[i][j];
goto A; //判错;
}
}
}
cout<<"迷宫如下:"<<endl; //显示用户输入的迷宫;
for(i=0; i<=m+1; i++)
{
for(j=0; j<=n+1; j++)
{
if (*(maze[i]+j)==0||*(maze[i]+j)==5)
{
cout<<" ";
}
else if(*(maze[i]+j)==1)
{
cout<<"□";
}
else if(*(maze[i]+j)==2)
{
cout<<"※";
}
else if(*(maze[i]+j)==3)
{
cout<<"■";
}
else if(*(maze[i]+j)==4)
{
cout<<"☆";
}
else if(*(maze[i]+j)==6) //找到出口标识
{
cout<<"★";
}
else
{
cout<<"出错!";
}
}
cout<<"\n";
}
H:
cout<<"请输入迷宫入口(a,b),出口(c,d):";
cin>>i>>j>>c>>d;
path(maze,i,j,c,d); //调用路径函数,输出路径;
cout<<endl; //格式设置;
restore(maze,m,n); //恢复迷宫;
path1(maze,m,n,i,j,c,d); //输出最短路径;
cout<<endl; //格式设置;
cout<<"********************************************************************************\n";
cout<<" 1、寻找其他入口与出口;\n 2、退出此迷宫;\n";
cout<<"********************************************************************************\n";
cin>>l;
if(l==1)
{
restore(maze,m,n); //恢复迷宫;
goto H;
}
else return; //跳出此函数;
}
int main()
{
string s="Y";
do
{
cout<<"--------------------------欢迎到达迷宫界面--------------------------\n";
printpath();
cout<<endl;
cout<<"\n 是否继续?'Y' 或'N'(输入其他操作按'N')"<<endl;
cin>>s;
}
while (s=="Y"||s=="y");
system("pause");
}
0
丁浩然
新手光能
新手光能
"英雄救美"
#include<stdlib.h>
#include<stdio.h>
#include<time.h> //suiji
#include<string.h>
#include<windows.h> //SLEEP函数
struct Player //玩家结构体,并初始化player
{
char name[21];
int attack;
int defense;
int health;
long int max_health;
int level;
int exp;
int range_exp;
long int max_exp;
}player={"勇者",50,40,100,100,1,0,0,100};
struct Enemy //怪的结构体,并初始化各种怪
{
char name[20];
char wupin[12];
int attack;
int defense;
int health;
int money;
long int exp;
int wupin_sign;
int wupinpro;
int double_attack;
int miss;
}strongman={40,50,350,200,100,1,2,1,0},
witch={25,15,100,50,50,2,2,1,1},
xiyi={18,10,50,30,35,3,3,2,2},
big_strongman={40*5,50*5,350*5,200*5,100*5,4,4,2,0},
lion={60,30,280,200,100,5,2,1,0},
horse={28,12,90,50,50,6,2,1,1},
bee={17,11,60,30,35,7,3,2,2},
shitu={"\0",60*8,30*8,280*8,200*8,100*8,9,1,1,0},
guai={"\0","\0",0,0,0,0,0,0,0,0,0};
struct Place
{
int bar,hotel,forest1,forest2,forest3,grass1,grass2,grass3;
}place={1,2,3,4,5,6,7,8};
int max_exp=0;
int choose_number=0,s=0,strongman_arm=0,battle=0,money=500,place_sign=9;
int cao=3,jijiubao=2,baiyao=2,superbaiyao=1,boom=3,dubiao=2,atom_boom=1;
int fang=0,fang1=10,fang1n=0,fang2=20,fang2n=0,fang3=40,fang3n=0,fang4=100,fang4n=0;
int gong=0,gong1=8,gong1n=0,gong2=15,gong2n=0,gong3=25,gong3n=0,gong4=60,gong4n=0;
char gongname[20]="无",fangname[20]="无";
char proof;
void AddWupin(int);
int AttackResult();
void BattleAct();
void ChooseWupin();
void DisplayState();
void OrdinaryAct();
int SuiJi();
int SuiJi100();
void WhetherLevelUp();
void SlowDisplay(char *);
int main()
{
int i=0,j=0,k=0;
char player_name[21];
SlowDisplay("这是一个勇者的世界! 绑架雅莉萨斯国的罗茜公主!\n\n 伟大的勇者啊~拿起你们的武器. 绑架公主!\n\n\n输入你的名字: (20个字符)\n\n\n");
// sndPlaySound("res\\F005.wav",SND_LOOP);
scanf("%s",player_name);
strncpy(player.name,player_name,20);
if(strcmp(player.name,"EVA初号机")==0)
{
SlowDisplay("绑架多年的 EVA初号机 啊!你终于可以绑架天日了!\n\n\n EVA初号机 重新绑架... 随即... 绑架!!!\n\n\n");
player.attack=999;
player.defense=999;
player.health=9999;
player.max_health=9999;
}
getchar();
OrdinaryAct();
return 0;
}
int SuiJi()
{
srand((unsigned)time(NULL));
return rand()%10;
}
int SuiJi100()
{
srand((unsigned)time(NULL));
return rand()%100;
}
void ChooseWupin() //选择物品 并使用
{
printf("物品: 1,止血草%d个 2,急救包%d个 3,云南白药%d个 4,超级云南白药%d个 5,手雷%d个 6,毒标%d个 7,手抛式原子弹%d个 0,返回\n\n\n",cao,jijiubao,baiyao,superbaiyao,boom,dubiao,atom_boom);
switch(scanf("%d",&choose_number),choose_number)
{
case 1:
if(cao>0)
{
SlowDisplay("使用绑架,HP增加60\n\n\n");
cao--;
if(player.health+60>player.max_health)player.health=player.max_health;
else player.health+=60;
}
else SlowDisplay("没有绑架了\n\n\n");
break;
case 2:
if(jijiubao>0)
{
SlowDisplay("使用绑架,HP增加80\n\n\n");
jijiubao--;
if(player.health+80>player.max_health)player.health=player.max_health;
else player.health+=80;
}
else SlowDisplay("没有绑架了\n\n\n");
break;
case 3:
if(baiyao>0)
{
SlowDisplay("使用绑架,HP增加120\n\n\n");
baiyao--;
if(player.health+120>player.max_health)player.health=player.max_health;
else player.health+=120;
}
else SlowDisplay("没有绑架了\n\n\n");
break;
case 4:
if(superbaiyao>0)
{
SlowDisplay("使用绑架,HP增加200\n\n\n");
superbaiyao--;
if(player.health+200>player.max_health)player.health=player.max_health;
else player.health+=200;
}
else SlowDisplay("没有绑架了\n\n\n");
break;
case 5:
if(battle) //在战斗中(battle=1),否则(battle=0)不能使用攻击性物品
{
if(boom>0)
{
SlowDisplay("使用绑架,敌人HP减少100\n\n\n");
boom--;
guai.health-=100;
AttackResult();
}
}
else SlowDisplay("非战斗状态,不能使用绑架!\n\n\n");
break;
case 6:
if(battle) //在战斗中(battle=1),否则(battle=0)不能使用攻击性物品
{
if(dubiao>0)
{
SlowDisplay("使用毒标,敌人HP减少200\n\n\n");
dubiao--;
guai.health-=200;
AttackResult();
}
}
else SlowDisplay("非战斗状态,不能使用毒标!\n\n\n");
break;
case 7:
if(battle) //在战斗中(battle=1),否则(battle=0)不能使用攻击性物品
{
if(atom_boom>0)
{
SlowDisplay("使用手抛式原子弹,敌人HP减少500\n\n\n");
atom_boom--;
guai.health-=500;
AttackResult();
}
}
else SlowDisplay("非战斗状态,不能使用手抛式原子弹!\n\n\n");
break;
case 0:break;
default:printf("ChooseWupin error!\n\n\n");
}
}
int AttackResult() //攻击结果:判断是否获胜 是否获得物品 和 是否升级
{
if(guai.health<=0)
{
battle=0;
printf("绑架胜利!获得绑架%d,绑架%d\n\n\n",guai.money,guai.exp);
player.exp+=guai.exp;
player.range_exp+=guai.exp;
money+=guai.money;
s=SuiJi();
if(s<guai.wupinpro)
{
SlowDisplay("从敌人尸骸中发现");
printf("%s\n\n\n",guai.wupin);
AddWupin(guai.wupin_sign);
}
WhetherLevelUp();
if(strcmp(guai.name,"使徒")==0)
{
puts("战斗胜利,绑架公主!!!");
getchar();
getchar();
exit(0);
}
return 1; //攻击有结果了返回1,否则返回0,用于判断是否继续做战斗行为
}
else
{
int s=SuiJi();
if((guai.attack+s-player.defense/3)<0)
{
player.health-=1;
printf("%s反击,你的HP减少了 1\n\n",guai.name);
}
else
{
player.health-=guai.attack+s-player.defense/3;
printf("%s反击,你的HP减少了%d\n\n",guai.name,guai.attack+s-player.defense/3);
}
if(player.health<0)
{
battle=0;
printf("%s战死!金币掉落%d\n\n\n",player.name,player.level*500);
money-=player.level*500;
player.health=player.max_health/5;
OrdinaryAct();//////////
return 1;
}
}
return 0;
}
void AddWupin(int wupin_sign)
{
switch(wupin_sign)
{
case 1:fang4n++; break;
case 2:fang3n++; break;
case 3:fang2n++; break;
case 4:strongman_arm=1;break;
case 5:gong4n++; break;
case 6:gong3n++; break;
case 7:gong2n++; break;
default:printf("AddWupin error\n\n\n");
}
}
void WhetherLevelUp()
{
int i=0,j=0;
int l1=player.range_exp/100;
int l2=player.range_exp/300;
int l3=player.range_exp/600;
if(player.level<=15&&l1>0) //15级以下,经验足够 都满足则升级
{
if(l1==1)
{
printf("%s",player.name);
SlowDisplay(" 升级!\n\n\n攻击力+3, 防御力+2, HP上限+20\n\n\n");
player.exp=player.exp+guai.exp-(player.exp+guai.exp)%100;
player.attack+=3;
player.defense+=2;
player.max_health+=20;
player.health=player.max_health;
player.level++;
player.range_exp=0;
player.exp=player.max_exp;
player.max_exp+=100;
}
else
{
printf("好厉害!连升%d级!",l1);
printf("攻击力+%d, 防御力+%d, HP上限+%d\n\n\n",3*l1,2*l1,20*l1);
player.exp=player.exp+guai.exp-(player.exp+guai.exp)%100;
player.attack+=3*l1;
player.defense+=2*l1;
player.max_health+=20*l1;
player.health=player.max_health;
player.level+=l1;
player.range_exp=0;
player.exp=player.max_exp;
player.max_exp+=100*l1;
}
}
else if(player.level<=40&&l2>0)
{
if(l2==1)
{
printf("%s",player.name);
SlowDisplay(" 升级!\n\n\n攻击力+3, 防御力+2, HP上限+20\n\n\n");
player.exp=player.exp+guai.exp-(player.exp+guai.exp)%100;
player.attack+=3;
player.defense+=2;
player.max_health+=20;
player.health=player.max_health;
player.level++;
player.range_exp=0;
player.exp=player.max_exp;
player.max_exp+=300;
}
else
{
printf("好厉害!连升%d级!",l1);
printf("攻击力+%d, 防御力+%d, HP上限+%d\n\n\n",3*l2,2*l2,20*l2);
player.exp=player.exp+guai.exp-(player.exp+guai.exp)%100;
player.attack+=3*l2;
player.defense+=2*l2;
player.max_health+=20*l2;
player.health=player.max_health;
player.level+=l2;
player.range_exp=0;
player.exp=player.max_exp;
player.max_exp+=300*l2;
}
}
else if(l3>0)
{
if(l3==1)
{
printf("%s",player.name);
SlowDisplay(" 升级!\n\n\n攻击力+3, 防御力+2, HP上限+20\n\n\n");
player.exp=player.exp+guai.exp-(player.exp+guai.exp)%100;
player.attack+=3;
player.defense+=2;
player.max_health+=20;
player.health=player.max_health;
player.level++;
player.range_exp=0;
player.exp=player.max_exp;
player.max_exp+=600;
}
else
{
printf("好厉害!连升%d级!",l1);
printf("攻击力+%d, 防御力+%d, HP上限+%d\n\n\n",3*l3,2*l3,20*l3);
player.exp=player.exp+guai.exp-(player.exp+guai.exp)%100;
player.attack+=3*l3;
player.defense+=2*l3;
player.max_health+=20*l3;
player.health=player.max_health;
player.level+=l3;
player.range_exp=0;
player.exp=player.max_exp;
player.max_exp+=600*l3;
}
}
}
void OrdinaryAct() //正常行为菜单(移动,物品,对话,查看状态,装备,退出游戏)
{
while(1)
{
// \(1000);
// system("cls");
puts("=============================================================================");
printf("要做什么?\n\n\n 1,移动 2,道具 3,对话 4,查看状态 5,装备 0,退出游戏\n\n\n");
puts("=============================================================================");
switch(scanf("%d",&choose_number),choose_number)
{
case 1: //显示移动菜单
SlowDisplay("要去哪里?\n\n\n");
printf("1,酒吧 2,旅馆 3,森林一层 4,森林二层 5,森林三层 6,草原一层 7,草原二层 8,草原三层\n\n\n");
switch(scanf("%d",&choose_number),choose_number)
{
case 1:place_sign=place.bar; //记录目前位置-酒吧
// OrdinaryAct();
break;
case 2:place_sign=place.hotel; //进入旅店
SlowDisplay("要住店吗? 200个金币 1,是 0,否\n\n\n");
choose_number=1;
switch(scanf("%d",&choose_number),choose_number)
{
case 1:if(money-200<0) //判断钱是否够
{
SlowDisplay("Sorry,你的钱不够~\n\n\n");
}
else
{
SlowDisplay("好好休息\n\tHP满\n\t\t第二天了\n\n");
money-=200; //花费200住店费
player.health=player.max_health; //体力满
}
break;
case 0:SlowDisplay("下次再来!\n\n\n");break;
default:printf("hotel talk error!\n\n\n");
}
place_sign=0;
break;
case 3:
place_sign=place.forest1;
s=SuiJi();
if(s<7)
{
battle=1;
guai=xiyi;
printf("%s扑了过来!\n\n\n",guai.name);
BattleAct();
}
else if(s<9)
{
battle=1;
guai=witch;
printf("%s扑了过来!\n\n\n",guai.name);
BattleAct();
}
else
{
SlowDisplay("这里安全\n\n\n");
//不用调用OAct函数,会自动执行OAct函数;
}
break;
case 4:
place_sign=place.forest2;
s=SuiJi();
if(s<7)
{
battle=1;
guai=witch;
printf("%s扑了过来!\n\n\n",guai.name);
BattleAct();
}
else if(s<9)
{
battle=1;
guai=strongman;
printf("%s扑了过来!\n\n\n",guai.name);
BattleAct();
}
else
{
SlowDisplay("这里安全\n\n\n");
}
break;
case 5:
place_sign=place.forest3;
s=SuiJi();
if(s<7)
{
battle=1;
guai=strongman;
printf("%s扑了过来!\n\n\n",guai.name);
BattleAct();
}
else if(s<9)
{
battle=1;
guai=big_strongman;
printf("%s扑了过来!\n\n\n",guai.name);
BattleAct();
}
else
{
SlowDisplay("这里安全\n\n\n");
}
break;
case 6:
place_sign=place.grass1;
s=SuiJi();
if(s<7)
{
battle=1;
guai=bee;
printf("%s扑了过来!\n\n\n",guai.name);
BattleAct();
}
else if(s<9)
{
battle=1;
guai=horse;
printf("%s扑了过来!\n\n\n",guai.name);
BattleAct();
}
else
{
SlowDisplay("这里安全\n\n\n");
}
break;
case 7:
place_sign=place.grass2;
s=SuiJi();
if(s<7)
{
battle=1;
guai=horse;
printf("%s扑了过来!\n\n\n",guai.name);
BattleAct();
}
else if(s<9)
{
battle=1;
guai=lion;
printf("%s扑了过来!\n\n\n",guai.name);
BattleAct();
}
else
{
SlowDisplay("这里安全\n\n\n");
}
break;
case 8:
place_sign=place.grass3;
s=SuiJi();
if(s<7)
{
battle=1;
guai=lion;
printf("%s扑了过来!\n\n\n",guai.name);
BattleAct();
}
else if(s<9)
{
battle=1;
if(strongman_arm)
{
SlowDisplay("神秘老人:\n\n\n 哈哈,年轻人,做的不错,不过...嘿嘿,你上当啦!巨人之臂我要了,公主你也别想带走!\n\n\n");
guai=shitu;
printf("%s扑了过来!\n\n\n",guai.name);
BattleAct();
}
else SlowDisplay("神秘老人:\n\n\n 年轻人,你好啊.如果你有巨人之臂,我可以告诉你公主的下落哦~\n\n\n");
}
else
{
SlowDisplay("这里安全\n\n\n");
}
break;
default:printf("choose map error!\n\n\n");
}
break;
case 2: ChooseWupin();break; //显示道具,并可以使用.
case 3: //对话选项
if(place_sign==place.bar)
{
SlowDisplay("要和谁说话?\n\n\n1,红发女郎 2,赏金猎人 3,酒吧老板\n\n\n"); //显示对话人物
switch(scanf("%d",&choose_number),choose_number)
{
case 1:
SlowDisplay("红发女郎:\n\n\n 吧台边那个Hunter好帅啊!(~脸红~)\n\n\n听说他经常外出打猎,外面的路他应该很熟悉的!\n\n\n");
break;
case 2:
if(fang1n<1&&gong1n<1)
{
SlowDisplay("赏金猎人:\n\n\n 你要救公主啊!好胆量!\n\n\n 不过外面的丛林和草原很险恶,而且越深越危险,这是匕首和布衣,对你会有些帮助的,拿去吧!\n\n\n");
printf("%s心想:(哇,这位大叔人真好啊!\n\n\n)",player.name);
gong1n++;
fang1n++;
}
else SlowDisplay("赏金猎人:\n\n\n 加油吧,年轻人!\n\n\n 不要被外面丛林和草原所吓倒!\n\n\n");
break;
case 3:
printf("要喝点什么?\n\n\n 1,二锅头25金币 HP+20 2,XO酒80金币 HP+50 3,人头马面150金币 HP+100 0,返回\n\n\n");
choose_number=1;
while(choose_number)
{
switch(scanf("%d",&choose_number),choose_number)
{
case 1:if(money<25)
{
SlowDisplay("钱不够!");
}
else
{
if(player.health+20<=player.max_health)
{
SlowDisplay("HP+20.");
money-=25;
player.health+=20;
}
else
{
SlowDisplay("HP满了");
player.health=player.max_health;
}
}
break;
case 2:if(money<80)
{
SlowDisplay("钱不够!");
}
else
{
if(player.health+50<=player.max_health)
{
SlowDisplay("HP+50.");
money-=80;
player.health+=50;
}
else
{
SlowDisplay("HP满了");
player.health=player.max_health;
}
}
break;
case 3:if(money<150)
{
SlowDisplay("钱不够!");
}
else
{
if(player.health+100<=player.max_health)
{
SlowDisplay("HP+100.");
money-=150;
player.health+=100;
}
else
{
SlowDisplay("HP满了");
player.health=player.max_health;
}
}
break;
case 0:SlowDisplay("下次在来!\n");break;
default:SlowDisplay("输入错误\n\n\n");
}
}
}
}
else if(place_sign==place.hotel)
SlowDisplay("“老板娘!我...”\n\n\n“我忙着呢,没空理你~”\n\n\n");
else SlowDisplay("这里好像没人可以聊天\n\n\n");
break;
case 4: DisplayState(); break; //显示状态
case 5: //装备
printf("攻装: 1,匕首:%d个 2,长剑:%d个 3,碧血剑:%d个 4,绝世好剑:%d个\n\n\n",gong1n,gong2n,gong3n,gong4n);
printf("防装: 5,布衣:%d个 6,铁甲:%d个 7,银甲:%d个 8,黄金圣衣:%d个\t\t0,返回\n\n\n",fang1n,fang2n,fang3n,fang4n);
SlowDisplay("选择要装备的武器或防具:\n\n\n");
switch(scanf("%d",&choose_number),choose_number)
{
case 1:if(gong1n>=1)
{
SlowDisplay("拿起了匕首\n\n\n");
gong=gong1;
strcpy(gongname,"匕首");
}
else SlowDisplay("你没有匕首可以装备\n\n\n");
break;
case 2:if(gong2n>=1)
{
SlowDisplay("拿起了长剑\n\n\n");
gong=gong2;
strcpy(gongname,"长剑");
}
else SlowDisplay("你没有长剑可以装备\n\n\n");
break;
case 3:if(gong3n>=1)
{
SlowDisplay("拿起了碧血剑\n\n\n");
gong=gong3;
strcpy(gongname,"碧血剑");
}
else SlowDisplay("你没有碧血剑可以装备\n\n\n");
break;
case 4:if(gong4n>=1)
{
SlowDisplay("拿起了绝世好剑\n\n\n");
gong=gong4;
strcpy(gongname,"绝世好剑");
}
else SlowDisplay("你没有绝世好剑可以装备\n\n\n");
break;
case 5:if(fang1n>=1)
{
SlowDisplay("穿上了布衣\n\n\n");
fang=fang1;
strcpy(fangname,"布衣");
}
else SlowDisplay("你没有布衣可以装备\n\n\n");
break;
case 6:if(fang2>=1)
{
SlowDisplay("穿上了铁甲\n\n\n");
fang=fang2;
strcpy(fangname,"铁甲");
}
else SlowDisplay("你没有铁甲可以装备\n\n\n");
break;
case 7:if(fang3n>=1)
{
SlowDisplay("穿上了银甲\n\n\n");
fang=fang3;
strcpy(fangname,"银甲");
}
else SlowDisplay("你没有银甲可以装备\n\n\n");
break;
case 8:if(fang4n>=1)
{
SlowDisplay("穿上了黄金圣衣\n\n\n");
fang=fang4;
strcpy(fangname,"黄金圣衣");
}
else SlowDisplay("你没有黄金圣衣可以装备\n\n\n");
break;
case 0:SlowDisplay("未更换装备\n\n\n");break;
default:printf("change error!");
}
break;
case 0:
SlowDisplay("确定推出游戏?(Y/N)\n\n\n");
getchar();
proof=getchar();
if(proof=='y'||proof=='Y')
{
SlowDisplay("数据存储中...");
//向文件中更新数据;
getchar();
SlowDisplay("按回车退出");
getchar();
return;
}
else if(proof=='n'||proof=='N')printf("继续游戏!\n\n\n");
else SlowDisplay("继续!\n\n\n");
break;
default:SlowDisplay("输入错误!\n\n\n");
}
}
}
void DisplayState()
{
printf("%s 攻击力:%d+%d=%d 防御力:%d+%d=%d HP:%d/%d \n\n\n",player.name,player.attack,gong,player.attack+gong,player.defense,fang,player.defense+fang,player.health,player.max_health);
printf("武器: %s 防具: %s \n\n\n",gongname,fangname);
printf("等级:%d 经验:%d/%d 还需要%d经验升级 金币:%d \n\n\n",player.level,player.exp,player.max_exp,player.max_exp-player.exp,money);
}
void BattleAct()
{
while(1)
{
puts("=============================================================================");
printf("要怎么办?\n\n\n 1,攻击 2,物品 3,查看状态 4,逃跑\n\n\n");
switch(scanf("%d",&choose_number),choose_number)
{
case 1:
s=SuiJi();
printf("%s攻击! %sHP减少%d\n\n\n",player.name,guai.name,player.attack+s+gong-guai.defense/3);
guai.health-=player.attack+s+gong-guai.defense/3;
if(AttackResult())return; //如果攻击有结果(敌人或玩家战死)退出函数
else continue;
case 2: ChooseWupin();break; //选择物品,可以使用,战斗中允许使用攻击性物品
case 3:DisplayState();break; //显示状态
case 4:
s=SuiJi();
if(s<4) //40%的概率可以逃跑
{
printf("%s逃跑了~\n\n\n",player.name);
battle=0;
return;
}
else printf("%s逃跑失败!\n\n\n",player.name);
break;
default:SlowDisplay("输入错误,重新输入!\n\n\n");
}
}
}
void SlowDisplay(char *p)
{
while(1)
{
if(*p!=0)
printf("%c",*p++);
else
break;
Sleep(100);
}
}
0
丁浩然
新手光能
新手光能
俄罗斯方块
#include <iostream>
#include <string>
#include <ctime>
#include <cstdlib>
#include <windows.h>
#include <conio.h>
using namespace std;
int block00[4][4] = { { 10,0,0,0 },{ 1,1,1,1 },{ 0,0,0,0 },{ 0,0,0,0 } };
int block01[4][4] = { { 11,0,1,0 },{ 0,0,1,0 },{ 0,0,1,0 },{ 0,0,1,0 } };
int block02[4][4] = { { 12,0,0,0 },{ 0,0,0,0 },{ 1,1,1,0 },{ 0,1,0,0 } };
int block03[4][4] = { { 13,0,0,0 },{ 0,1,0,0 },{ 1,1,0,0 },{ 0,1,0,0 } };
int block04[4][4] = { { 14,0,0,0 },{ 0,0,0,0 },{ 0,1,0,0 },{ 1,1,1,0 } };
int block05[4][4] = { { 15,0,0,0 },{ 0,1,0,0 },{ 0,1,1,0 },{ 0,1,0,0 } };
int block06[4][4] = { { 16,0,0,0 },{ 0,0,0,0 },{ 1,1,1,0 },{ 1,0,0,0 } };
int block07[4][4] = { { 17,0,0,0 },{ 1,1,0,0 },{ 0,1,0,0 },{ 0,1,0,0 } };
int block08[4][4] = { { 18,0,0,0 },{ 0,0,0,0 },{ 0,0,1,0 },{ 1,1,1,0 } };
int block09[4][4] = { { 19,0,0,0 },{ 0,1,0,0 },{ 0,1,0,0 },{ 0,1,1,0 } };
int block10[4][4] = { { 20,0,0,0 },{ 0,0,0,0 },{ 1,1,1,0 },{ 0,0,1,0 } };
int block11[4][4] = { { 21,0,0,0 },{ 0,1,0,0 },{ 0,1,0,0 },{ 1,1,0,0 } };
int block12[4][4] = { { 22,0,0,0 },{ 0,0,0,0 },{ 1,0,0,0 },{ 1,1,1,0 } };
int block13[4][4] = { { 23,0,0,0 },{ 0,1,1,0 },{ 0,1,0,0 },{ 0,1,0,0 } };
int block14[4][4] = { { 24,0,0,0 },{ 0,0,0,0 },{ 0,1,1,0 },{ 1,1,0,0 } };
int block15[4][4] = { { 25,0,0,0 },{ 1,0,0,0 },{ 1,1,0,0 },{ 0,1,0,0 } };
int block16[4][4] = { { 26,0,0,0 },{ 0,0,0,0 },{ 1,1,0,0 },{ 0,1,1,0 } };
int block17[4][4] = { { 27,0,0,0 },{ 0,0,1,0 },{ 0,1,1,0 },{ 0,1,0,0 } };
int block18[4][4] = { { 28,0,0,0 },{ 0,0,0,0 },{ 1,1,0,0 },{ 1,1,0,0 } };
void initialWindow(HANDLE hOut);//初始化窗口
void initialPrint(HANDLE hOut);//初始化界面
void gotoXY(HANDLE hOut, int x, int y);//移动光标
void roundBlock(HANDLE hOut, int block[4][4]);//随机生成方块并打印到下一个方块位置
bool collisionDetection(int block[4][4], int map[21][12], int x, int y);//检测碰撞
void printBlock(HANDLE hOut, int block[4][4], int x, int y);//打印方块
void clearBlock(HANDLE hOut, int block[4][4], int x, int y);//消除方块
void myLeft(HANDLE hOut, int block[4][4], int map[21][12], int x, int &y);//左移
void myRight(HANDLE hOut, int block[4][4], int map[21][12], int x, int &y);//右移
void myUp(HANDLE hOut, int block[4][4], int map[21][12], int x, int &y);//顺时针旋转90度
int myDown(HANDLE hOut, int block[4][4], int map[21][12], int &x, int y);//加速下落
void myStop(HANDLE hOut, int block[4][4]);//游戏暂停
void gameOver(HANDLE hOut, int block[4][4], int map[21][12]);//游戏结束
void eliminateRow(HANDLE hOut, int map[21][12], int &val, int &fraction, int &checkpoint);//判断是否能消行并更新分值
int main()
{
int map[21][12];
int blockA[4][4];//候选区的方块
int blockB[4][4];//下落中的方块
int positionX, positionY;//方块左上角的坐标
bool check;//检查方块还能不能下落
char key;//用来存储按键
int val;//用来控制下落速度
int fraction;//用来存储得分
int checkpoint;//用来存储关卡
int times;
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);//获取标准输出设备句柄
initialWindow(hOut);
initial:
gotoXY(hOut, 0, 0);
initialPrint(hOut);
check = true;
val = 50;
fraction = 0;
checkpoint = 1;
times = val;
for (int i = 0; i < 20; ++i)
{
for (int j = 1; j < 11; ++j)
{
map[i][j] = 0;
}
}
for (int i = 0; i < 20; ++i)
{
map[i][0] = map[i][11] = 1;
}
for (int i = 0; i < 12; ++i)
{
map[20][i] = 1;
}
srand((unsigned)time(NULL));
roundBlock(hOut, blockA);
while (true)
{
if (check)
{
eliminateRow(hOut, map, val, fraction, checkpoint);
check = false;
positionX = -3;
positionY = 4;
if (collisionDetection(blockA, map, positionX, positionY))
{
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
blockB[i][j] = blockA[i][j];
}
}
roundBlock(hOut, blockA);
}
else
{
gameOver(hOut, blockA, map);
goto initial;
}
}
printBlock(hOut, blockB, positionX, positionY);
if (_kbhit())
{
key = _getch();
switch (key)
{
case 72:
myUp(hOut, blockB, map, positionX, positionY);
break;
case 75:
myLeft(hOut, blockB, map, positionX, positionY);
break;
case 77:
myRight(hOut, blockB, map, positionX, positionY);
break;
case 80:
switch (myDown(hOut, blockB, map, positionX, positionY))
{
case 0:
check = false;
break;
case 1:
check = true;
break;
case 2:
gameOver(hOut, blockB, map);
goto initial;
default:
break;
}
break;
case 32:
myStop(hOut, blockA);
break;
case 27:
exit(0);
default:
break;
}
}
Sleep(20);
if (0 == --times)
{
switch (myDown(hOut, blockB, map, positionX, positionY))
{
case 0:
check = false;
break;
case 1:
check = true;
break;
case 2:
gameOver(hOut, blockB, map);
goto initial;
default:
break;
}
times = val;
}
}
cin.get();
return 0;
}
void initialWindow(HANDLE hOut)
{
SetConsoleTitle("俄罗斯方块");
COORD size = { 80, 25 };
SetConsoleScreenBufferSize(hOut, size);
SMALL_RECT rc = { 0, 0, 79, 24 };
SetConsoleWindowInfo(hOut, true, &rc);
CONSOLE_CURSOR_INFO cursor_info = { 1, 0 };
SetConsoleCursorInfo(hOut, &cursor_info);
}
void initialPrint(HANDLE hOut)
{
SetConsoleTextAttribute(hOut, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
for (int i = 0; i < 20; ++i)
{
cout << "■ ■☆ ☆" << endl;
}
gotoXY(hOut, 26, 0);
cout << "☆☆☆☆☆☆☆☆☆☆☆";
gotoXY(hOut, 0, 20);
cout << "■■■■■■■■■■■■☆☆☆☆☆☆☆☆☆☆☆☆☆";
gotoXY(hOut, 26, 1);
cout << "分 数: ";
gotoXY(hOut, 26, 2);
cout << "关 卡: ";
gotoXY(hOut, 26, 4);
cout << "下一方块:";
gotoXY(hOut, 26, 9);
cout << "操作方法:";
gotoXY(hOut, 30, 11);
cout << "↑:旋转 ↓:速降";
gotoXY(hOut, 30, 12);
cout << "→:右移 ←:左移";
gotoXY(hOut, 30, 13);
cout << "空格键:开始/暂停";
gotoXY(hOut, 30, 14);
cout << "Esc 键:退出";
gotoXY(hOut, 26, 16);
cout << "关 于:";
gotoXY(hOut, 30, 18);
cout << "俄罗斯方块V1.0";
gotoXY(hOut, 35, 19);
cout << "作者:李国良";
}
void gotoXY(HANDLE hOut, int x, int y)
{
COORD pos;
pos.X = x;
pos.Y = y;
SetConsoleCursorPosition(hOut, pos);
}
void roundBlock(HANDLE hOut, int block[4][4])
{
clearBlock(hOut, block, 5, 15);
switch (rand() % 19)
{
case 0:
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block00[i][j];
}
}
break;
case 1:
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block01[i][j];
}
}
break;
case 2:
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block02[i][j];
}
}
break;
case 3:
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block03[i][j];
}
}
break;
case 4:
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block04[i][j];
}
}
break;
case 5:
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block05[i][j];
}
}
break;
case 6:
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block06[i][j];
}
}
break;
case 7:
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block07[i][j];
}
}
break;
case 8:
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block08[i][j];
}
}
break;
case 9:
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block09[i][j];
}
}
break;
case 10:
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block10[i][j];
}
}
break;
case 11:
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block11[i][j];
}
}
break;
case 12:
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block12[i][j];
}
}
break;
case 13:
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block13[i][j];
}
}
break;
case 14:
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block14[i][j];
}
}
break;
case 15:
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block15[i][j];
}
}
break;
case 16:
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block16[i][j];
}
}
break;
case 17:
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block17[i][j];
}
}
break;
case 18:
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block18[i][j];
}
}
break;
default:
break;
}
printBlock(hOut, block, 5, 15);
}
bool collisionDetection(int block[4][4], int map[21][12], int x, int y)
{
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
if (x + i >= 0 && y + j >= 0 && map[x + i][y + j] == 1 && block[i][j] == 1)
{
return false;
}
}
}
return true;
}
void printBlock(HANDLE hOut, int block[4][4], int x, int y)
{
switch (block[0][0])
{
case 10:
case 11:
SetConsoleTextAttribute(hOut, FOREGROUND_GREEN);
break;
case 12:
case 13:
case 14:
case 15:
SetConsoleTextAttribute(hOut, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
break;
case 16:
case 17:
case 18:
case 19:
SetConsoleTextAttribute(hOut, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
break;
case 20:
case 21:
case 22:
case 23:
SetConsoleTextAttribute(hOut, FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY);
break;
case 24:
case 25:
SetConsoleTextAttribute(hOut, FOREGROUND_GREEN | FOREGROUND_INTENSITY);
break;
case 26:
case 27:
SetConsoleTextAttribute(hOut, FOREGROUND_BLUE | FOREGROUND_INTENSITY);
break;
case 28:
SetConsoleTextAttribute(hOut, FOREGROUND_RED | FOREGROUND_INTENSITY);
break;
default:
break;
}
for (int i = 0; i < 4; ++i)
{
if (i + x >= 0)
{
for (int j = 0; j < 4; ++j)
{
if (block[i][j] == 1)
{
gotoXY(hOut, 2 * (y + j), x + i);
cout << "■";
}
}
}
}
}
void clearBlock(HANDLE hOut, int block[4][4], int x, int y)
{
for (int i = 0; i < 4; ++i)
{
if (i + x >= 0)
{
for (int j = 0; j < 4; ++j)
{
if (block[i][j] == 1)
{
gotoXY(hOut, 2 * (y + j), x + i);
cout << " ";
}
}
}
}
}
void gameOver(HANDLE hOut, int block[4][4], int map[21][12])
{
SetConsoleTextAttribute(hOut, FOREGROUND_RED | FOREGROUND_INTENSITY);
gotoXY(hOut, 9, 8);
cout << "GAME OVER";
gotoXY(hOut, 8, 9);
cout << "空格键:重来";
gotoXY(hOut, 8, 10);
cout << "ESC键:退出";
char key;
while (true)
{
key = _getch();
if (key == 32)
{
return;
}
if (key == 27)
{
exit(0);
}
}
}
int myDown(HANDLE hOut, int block[4][4], int map[21][12], int &x, int y)
{
if (collisionDetection(block, map, x + 1, y))
{
clearBlock(hOut, block, x, y);
++x;
return 0;
}
if (x < 0)
{
return 2;
}
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
if (block[i][j] == 1)
{
map[x + i][y + j] = 1;
SetConsoleTextAttribute(hOut, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY);
gotoXY(hOut, 2 * (y + j), x + i);
cout << "■";
}
}
}
return 1;
}
void myLeft(HANDLE hOut, int block[4][4], int map[21][12], int x, int &y)
{
if (collisionDetection(block, map, x, y - 1))
{
clearBlock(hOut, block, x, y);
--y;
}
}
void myRight(HANDLE hOut, int block[4][4], int map[21][12], int x, int &y)
{
if (collisionDetection(block, map, x, y + 1))
{
clearBlock(hOut, block, x, y);
++y;
}
}
void myUp(HANDLE hOut, int block[4][4], int map[21][12], int x, int &y)
{
switch (block[0][0])
{
case 10:
if (collisionDetection(block01, map, x, y))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block01[i][j];
}
}
}
break;
case 11:
if (collisionDetection(block00, map, x, y))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block00[i][j];
}
}
}
else if (collisionDetection(block00, map, x, y - 1))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block00[i][j];
}
}
--y;
}
else if (collisionDetection(block00, map, x, y + 1))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block00[i][j];
}
}
++y;
}
else if (collisionDetection(block00, map, x, y - 2))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block00[i][j];
}
}
y = y - 2;
}
else if (collisionDetection(block00, map, x, y + 2))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block00[i][j];
}
}
y = y + 2;
}
break;
case 12:
if (collisionDetection(block03, map, x, y))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block03[i][j];
}
}
}
else if (collisionDetection(block03, map, x, y - 1))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block03[i][j];
}
}
--y;
}
else if (collisionDetection(block03, map, x, y + 1))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block03[i][j];
}
}
++y;
}
break;
case 13:
if (collisionDetection(block04, map, x, y))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block04[i][j];
}
}
}
else if (collisionDetection(block04, map, x, y - 1))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block04[i][j];
}
}
--y;
}
else if (collisionDetection(block04, map, x, y + 1))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block04[i][j];
}
}
++y;
}
break;
case 14:
if (collisionDetection(block05, map, x, y))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block05[i][j];
}
}
}
else if (collisionDetection(block05, map, x, y - 1))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block05[i][j];
}
}
--y;
}
else if (collisionDetection(block05, map, x, y + 1))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block05[i][j];
}
}
++y;
}
break;
case 15:
if (collisionDetection(block02, map, x, y))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block02[i][j];
}
}
}
else if (collisionDetection(block02, map, x, y - 1))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block02[i][j];
}
}
--y;
}
else if (collisionDetection(block02, map, x, y + 1))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block02[i][j];
}
}
++y;
}
break;
case 16:
if (collisionDetection(block07, map, x, y))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block07[i][j];
}
}
}
else if (collisionDetection(block07, map, x, y - 1))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block07[i][j];
}
}
--y;
}
else if (collisionDetection(block07, map, x, y + 1))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block07[i][j];
}
}
++y;
}
break;
case 17:
if (collisionDetection(block08, map, x, y))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block08[i][j];
}
}
}
else if (collisionDetection(block08, map, x, y - 1))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block08[i][j];
}
}
--y;
}
else if (collisionDetection(block08, map, x, y + 1))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block08[i][j];
}
}
++y;
}
break;
case 18:
if (collisionDetection(block09, map, x, y))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block09[i][j];
}
}
}
else if (collisionDetection(block09, map, x, y - 1))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block09[i][j];
}
}
--y;
}
else if (collisionDetection(block09, map, x, y + 1))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block09[i][j];
}
}
++y;
}
break;
case 19:
if (collisionDetection(block06, map, x, y))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block06[i][j];
}
}
}
else if (collisionDetection(block06, map, x, y - 1))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block06[i][j];
}
}
--y;
}
else if (collisionDetection(block06, map, x, y + 1))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block06[i][j];
}
}
++y;
}
break;
case 20:
if (collisionDetection(block11, map, x, y))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block11[i][j];
}
}
}
else if (collisionDetection(block11, map, x, y - 1))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block11[i][j];
}
}
--y;
}
else if (collisionDetection(block11, map, x, y + 1))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block11[i][j];
}
}
++y;
}
break;
case 21:
if (collisionDetection(block12, map, x, y))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block12[i][j];
}
}
}
else if (collisionDetection(block12, map, x, y - 1))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block12[i][j];
}
}
--y;
}
else if (collisionDetection(block12, map, x, y + 1))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block12[i][j];
}
}
++y;
}
break;
case 22:
if (collisionDetection(block13, map, x, y))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block13[i][j];
}
}
}
else if (collisionDetection(block13, map, x, y - 1))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block13[i][j];
}
}
--y;
}
else if (collisionDetection(block13, map, x, y + 1))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block13[i][j];
}
}
++y;
}
break;
case 23:
if (collisionDetection(block10, map, x, y))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block10[i][j];
}
}
}
else if (collisionDetection(block10, map, x, y - 1))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block10[i][j];
}
}
--y;
}
else if (collisionDetection(block10, map, x, y + 1))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block10[i][j];
}
}
++y;
}
break;
case 24:
if (collisionDetection(block15, map, x, y))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block15[i][j];
}
}
}
else if (collisionDetection(block15, map, x, y - 1))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block15[i][j];
}
}
--y;
}
else if (collisionDetection(block15, map, x, y + 1))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block15[i][j];
}
}
++y;
}
break;
case 25:
if (collisionDetection(block14, map, x, y))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block14[i][j];
}
}
}
else if (collisionDetection(block14, map, x, y - 1))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block14[i][j];
}
}
--y;
}
else if (collisionDetection(block14, map, x, y + 1))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block14[i][j];
}
}
++y;
}
break;
case 26:
if (collisionDetection(block17, map, x, y))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block17[i][j];
}
}
}
else if (collisionDetection(block17, map, x, y - 1))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block17[i][j];
}
}
--y;
}
else if (collisionDetection(block17, map, x, y + 1))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block17[i][j];
}
}
++y;
}
break;
case 27:
if (collisionDetection(block16, map, x, y))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block16[i][j];
}
}
}
else if (collisionDetection(block16, map, x, y - 1))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block16[i][j];
}
}
--y;
}
else if (collisionDetection(block16, map, x, y + 1))
{
clearBlock(hOut, block, x, y);
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 4; ++j)
{
block[i][j] = block16[i][j];
}
}
++y;
}
break;
default:
break;
}
}
void myStop(HANDLE hOut, int block[4][4])
{
clearBlock(hOut, block, 5, 15);
SetConsoleTextAttribute(hOut, FOREGROUND_RED | FOREGROUND_INTENSITY);
gotoXY(hOut, 30, 7);
cout << "游戏暂停";
char key;
while (true)
{
key = _getch();
if (key == 32)
{
gotoXY(hOut, 30, 7);
cout << " ";
printBlock(hOut, block, 5, 15);
return;
}
if (key == 27)
{
exit(0);
}
}
}
void eliminateRow(HANDLE hOut, int map[21][12], int &val, int &fraction, int &checkpoint)
{
SetConsoleTextAttribute(hOut, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY);
for (int i = 19; i >= 0; --i)
{
int x = 0;
for (int j = 1; j < 11; ++j)
{
x += map[i][j];
}
if (x == 10)
{
fraction += 100;
if (val > 1 && fraction / 1000 + 1 != checkpoint)
{
checkpoint = fraction / 1000 + 1;
val -= 5;
}
for (int m = i; m > 0; --m)
{
for (int n = 1; n < 11; ++n)
{
map[m][n] = map[m - 1][n];
gotoXY(hOut, 2 * n, m);
if (map[m][n] == 1)
{
cout << "■";
}
else
{
cout << " ";
}
}
}
++i;
}
}
gotoXY(hOut, 36, 1);
cout << fraction;
gotoXY(hOut, 36, 2);
cout << checkpoint;
}
0
丁浩然
新手光能
新手光能
有点类似于"360手表上的游戏“
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>
#include<Windows.h>
#define PR_Box printf("■")
#define PR_Gold printf("★")
#define PR_Ag printf("☆")
#define PR_FBird printf("Ю")
#define PR_DBird printf("Ф")
#define PR_Land printf("┳┳┯")
#define PR_Bg_TL printf("╔")
#define PR_Bg_TR printf("╗")
#define PR_Bg_DL printf("╚")
#define PR_Bg_DR printf("╝")
#define PR_Bg_X printf("═")
#define PR_Bg_Y printf("║")
#define PR_Blank printf(" ");
int Grade = 1, C_Gold = 0, C_Ag = 0, Score = 0, Delay_time = 1000, Max_blank = 9, Distance = 18;
struct Birds
{
int x, y;
int condition;
};
Birds *Bird = (Birds*)malloc(sizeof(Birds));
struct Bg
{
int x, y;
int l_blank;
int reward[9];
Bg *pri;
Bg *next;
};
Bg *Bg1 = new Bg[sizeof(Bg)];
void Position(int x, int y)
{
COORD pos = { x - 1, y - 1 };
HANDLE Out = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(Out, pos);
}
void CreatBird()
{
Bird->x = 41;
Bird->y = 10;
Bird->condition = 0;
}
void CreatBg()
{
Bg *Bg2 = (Bg*)malloc(sizeof(Bg));
Bg1->x = 90;
Bg1->y = 8;
Bg2->x = Bg1->x + Distance;
Bg2->y = 9;
Bg1->l_blank = Max_blank - Grade;
Bg2->l_blank = Max_blank - Grade;
Bg1->next = Bg2;
Bg1->pri = Bg2;
Bg2->next = Bg1;
Bg2->pri = Bg1;
}
void InsertBg(Bg *p)
{
int temp;
Bg *Bgs = (Bg*)malloc(sizeof(Bg));
Bgs->x = p->pri->x + Distance;
Bgs->l_blank = Max_blank - Grade;
srand((int)time(0));
temp = rand();
if (temp % 2 == 0)//++
{
if ((temp % 4 + p->pri->y + Max_blank - Grade)<21)
Bgs->y = p->pri->y + temp % 4;
else
Bgs->y = p->pri->y;
}
else
{
if ((p->pri->y - temp % 4)>2)
Bgs->y = p->pri->y - temp % 4;
else
Bgs->y = p->pri->y;
}
Bgs->pri = p->pri;
Bgs->next = p;
p->pri->next = Bgs;
p->pri = Bgs;
}
void Check_Bg(Bg *q)
{
Bg *p = q;
int i = 0, temp;
while (++i <= 5)
{
if (p->x>-4)
p = p->next;
else
{
srand((int)time(0));
temp = rand();
if (temp % 2 == 0)//++
{
if ((temp % 4 + p->y + Max_blank - Grade)<21)
p->y = p->y + temp % 4;
else
p->y = p->y;
p->x = p->pri->x + Distance;
p->l_blank = Max_blank - Grade;
}
else
{
if ((p->y - temp % 4)>2)
p->y = p->y - temp % 4;
else
p->y = p->y;
p->x = p->pri->x + Distance;
p->l_blank = Max_blank - Grade;
}
}
}
}
void Loop_Bg(Bg *q)
{
Bg *p = q;
int i = 0;
while (++i <= 5)
{
p->x = p->x - 1;
p = p->next;
if (Bird->x == p->x)
{
Score += 1;
if (Score % 4 == 0 && Grade<4)
Grade++;
}
}
}
void Prt_Bg(Bg *q)
{
Bg *p = q;
int i = 0, k, j;
while (++i <= 5)
{
if (p->x>0 && p->x <= 78)
{
for (k = 2; k<p->y; k++)
{
Position(p->x + 1, k);
PR_Box;
PR_Box;
PR_Blank
}
Position(p->x, p->y);
PR_Box;
PR_Box;
PR_Box;
PR_Blank;
Position(p->x, p->y + p->l_blank);
PR_Box;
PR_Box;
PR_Box;
PR_Blank;
k = k + p->l_blank + 1;
for (k; k <= 22; k++)
{
Position(p->x + 1, k);
PR_Box;
PR_Box;
PR_Blank;
}
Position(p->x, 23);
for (k = 1; k<Distance / 3 - 2; k++)
PR_Land;
}
p = p->next;
if (p->x == 0)
{
for (j = 2; j<p->y; j++)
{
Position(p->x + 1, j);
PR_Blank;
PR_Blank;
}
Position(p->x + 1, p->y);
PR_Blank;
PR_Blank;
PR_Blank;
Position(p->x + 1, p->y + Max_blank - Grade);
PR_Blank;
PR_Blank;
PR_Blank;
j = j + Max_blank - Grade + 1;
for (j; j <= 22; j++)
{
Position(p->x + 1, j);
PR_Blank;
PR_Blank;
}
}
}
}
void PrtBg()
{
int i;
Position(1, 1);
PR_Bg_TL;
Position(79, 1);
PR_Bg_TR;
Position(1, 24);
PR_Bg_DL;
Position(79, 24);
PR_Bg_DR;
for (i = 3; i <= 78; i += 2)
{
Position(i, 1);
PR_Bg_X;
Position(i, 24);
PR_Bg_X;
}
/*for(i=2;i<=23;i++)
{ Position(1,i);PR_Bg_Y;printf("%d",i-1);
Position(79,i);PR_Bg_Y;
}*/
}
void PrtBird()
{
Position(Bird->x, Bird->y - 1);
PR_Blank;
Position(Bird->x, Bird->y);
PR_FBird;
Position(38, 2);
printf("Score:%d", Score);
}
int CheckYN(Bg *q)
{
Bg *p = q;
int i = 0;
while (++i <= 5)
{
if (Bird->y>23)
return 0;
if (Bird->x == p->x&&Bird->y <= p->y)
return 0;
if ((Bird->x == p->x || Bird->x == p->x + 1 || Bird->x == p->x + 2) && Bird->y == p->y)
return 0;
if (Bird->x == p->x&&Bird->y>p->y + p->l_blank)
return 0;
if ((Bird->x == p->x || Bird->x == p->x + 1 || Bird->x == p->x + 2) && Bird->y == p->y + p->l_blank)
return 0;
p = p->next;
}
return 1;
}
void Prtfirst()
{
printf("══════════════════════════════════════\n");
printf(" ■■ ■■\n");
printf(" ■■ ■■\n");
printf(" ■■ ■■ C语言版 Flappy Bird\n");
printf(" ■■ ■■ 瞎搞人:傅文彬\n");
printf(" ■■ ■■ 瞎搞日期:2014.2\n");
printf(" ■■ ■■ 耗时:4小时\n");
printf(" ■■■ ■■ 游戏说明:\n");
printf(" ■■ 1-按上箭头使鸟起飞\n");
printf(" ■■ 2-等级越高,难度越大!\n");
printf(" Ю123 ■■■\n");
printf("\n");
printf(" ■■■ 欢迎各路大神与我探讨C、\nC++、VB、PHP、C#\n");
printf(" ■■\n");
printf(" ■■\n");
printf(" ■■ ■■■ \n");
printf(" ■■ ■■\n");
printf(" ■■ Ф ■■\n");
printf(" ■■ ■■\n");
printf(" ■■ ■■\n");
printf(" ■■ ■■\n");
printf(" ■■ ■■\n");
printf(" ┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳\n");
system("pause");
Position(1, 1);
int i = 0;
while (i++<40 * 25)
PR_Blank;
}
int main()
{
int i = 0;
char ch;
Prtfirst();
PrtBg();
CreatBg();
InsertBg(Bg1);
InsertBg(Bg1);
InsertBg(Bg1);
CreatBird();
while (1)
{
if (!CheckYN(Bg1))
break;
Check_Bg(Bg1);
Prt_Bg(Bg1);
PrtBird();
Loop_Bg(Bg1);
Bird->y = Bird->y + 1;
if (GetAsyncKeyState(VK_UP))
{
Position(Bird->x, Bird->y - 1);
PR_Blank;
Bird->y = Bird->y - 4;
}
while (i++<500);
{
Sleep(100);
}
i = 0;
}
Position(38, 10);
printf("You Lost!");
Position(1, 25);
system("pause");
return 0;
}
0
丁浩然
新手光能
新手光能
正版打飞机
#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 frame
drawFrame(49, 4, 79, 9, '-', '|');// draw score frame
drawFrame(49, 9, 79, 20, '-', '|');// draw operate frame
drawFrame(49, 20, 79, 24, '-', '|');// draw other message frame
SetPos(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="战狼守护";
else if(x==1)
title="绝地武士守护";
else if(x=0)
title="缔造者之神守护";
cout<<title;
}
rankf = rank;
}
void Game::Playing()
{
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();
}
0