#define framex 5
#define framey 5
#define wide 20
#define high 20
int i,j,a[2];
//游戏封面
void Gotoxy(HANDLE hout,int x,int y){
//COORD是WindowsAPI中定义的一种结构,表示一个字符在控制台屏幕上的坐标
COORD pos;
pos.X=x;
pos.Y=y;
//SetConsoleCursorPosition是API中定位光标位置的函数。
SetConsoleCursorPosition(hout,pos);
}
void cover (HANDLE hout){
char a;
a=getchar();
system("cls");
}
//定义蛇的结构体
struct Snake{
int x[100];
int y[100];
int speed;
int length;
int count;
};
//定义食物的结构体
struct Food{
int x;
int y;
};
//制作框架
void makeframe(struct Snake snake){
//定义显示器变量句柄
HANDLE hout=GetStdHandle(STD_OUTPUT_HANDLE);
color(7);
Gotoxy(hout,framex+wide*2+5,framey);
printf( " 贪吃蛇");
Gotoxy(hout,framex+wide*2+5,framey+3);
printf("使用方向键或wasd移动");
Gotoxy(hout,framex+wide*2+5,framey+5);
printf("长按方向键可加速");
Gotoxy(hout,framex+wide*2+5,framey+7);
printf("按任意键暂停,方向键继续");
//打印上边框
for(i=0;i<wide*2+1;i++){
Gotoxy(hout,framex+i,framey);
printf("*");
}
//打印下边框
for(i=0;i<wide*2+2;i++){
Gotoxy(hout,framex+i,framey+high);
printf("*");
}
//打印左边框
for(i=0;i<high;i++){
Gotoxy(hout,framex,framey+i);
printf("■");
}
//打印右边框
for(i=0;i<high;i++){
Gotoxy(hout,framex+wide*2+1,framey+i);
printf("■");
}
}
//游戏信息
void infor(HANDLE hout,struct Snake* snake){
Gotoxy(hout,framex+wide*2+5,framey+15);
color(6);
printf("当前速度:%d",-snake->speed+500);
Gotoxy(hout,framex+wide*2+5,framey+17);
color(8);
printf("当前得分:%d",snake->count);
Gotoxy(hout,framex+wide*2+5,framey+19);
color(4);
printf("当前长度:%d",snake->length);
}
//初始化蛇
void initsnake(struct Snake *snake){
snake->x[0]=framex+2;
snake->y[0]=framey+high/2;
snake->count=0;
snake->length=3;
snake->speed=400;
//初始化由蛇尾至蛇头的坐标
for(i=1;i<snake->length;i++){
snake->x[i]=snake->x[i-1]+1;
snake->y[i]=snake->y[i-1];
}
}
//打印蛇
void printsnake(HANDLE hout ,struct Snake *snake){
for(i=0;i<snake->length;i++){
Gotoxy(hout,snake->x[i],snake->y[i]);
if(i==snake->length-1)
{
color(6);
printf("·");
}
else if(i==0)
{
color(8);
printf("0");
}
else
{
color(4);
printf("■");
}
}
}
//移动蛇
void movesnake(HANDLE hout,struct Snake *snake){
Gotoxy(hout,snake->x[0],snake->y[0]);
//清除蛇尾
printf(" ");
//蛇的后一节坐标变成前一节的坐标
for(i=1;i<snake->length;i++){
snake->x[i-1]=snake->x[i];
snake->y[i-1]=snake->y[i];
}
}
//打印食物
void printfood (HANDLE hout,struct Snake *snake,struct Food* food){
//用计算机时间获取随机值
srand((unsigned)time(NULL));
while(1){
//将食物的横纵坐标的大小限定在窗口大小内
food->x=rand()%(wide-2)+1;
food->y=rand()%(high-2)+1;
//避免食物出现在边框上
if(food->x==0&&food->y==0)
continue;
//将食物的坐标放置在窗口内
food->x=2*food->x+framex;
food->y+=framey;
//如果食物出现在蛇上,重新产生食物
for(i=0;i<snake->length;i++){
if(food->x==snake->x[i]&&food->y==snake->y[i])
break;
}
//食物不在蛇上,打印食物,结束循环
if(i==snake->length){
Gotoxy(hout,food->x,food->y);
color(7);
printf("Q");
break;
}
}
}
//吃食物
void eatfood(HANDLE hout,struct Snake * snake,struct Food *food){
//如果蛇头的坐标等于食物的坐标
if(snake->x[snake->length-1]==food->x&&snake->y[snake->length-1]==food->y){
//蛇长加一
snake->length++;
//蛇身(不包括蛇尾)整体像前移动一格
for(i=snake->length-1;i>0;i--){
snake->x[i]=snake->x[i-1];
snake->y[i]=snake->y[i-1];
}
//得到蛇尾的坐标(即蛇移动前的蛇尾坐标)
snake->x[0]=a[0];
snake->y[0]=a[1];
printfood(hout,snake,food);
snake->count++;
if(snake->count%3==0)
snake->speed-=50;
}
}
//死亡判断
int ifdead(struct Snake* snake){
//如果碰到左边界 返回0;
if(snake->x[snake->length-1]==framex)
return 0;
//如果碰到右边界 返回0;
if(snake->x[snake->length-1]==framex+wide*2)
return 0;
//如果碰到上边界 返回0;
if(snake->y[snake->length-1]==framey)
return 0;
//如果碰到下边界 返回0;
if(snake->y[snake->length-1]==framey+high)
return 0;
//如果碰到自己身体 返回0;
for(i=0; i<snake->length-1; i++)
if( snake->x[snake->length-1]==snake->x[i] && snake->y[snake->length-1]==snake->y[i] )
return 0;
//否则返回1;
return 1;
}
//开始游戏
int Snake(){
unsigned char ch =77;
//定义显示器句柄
HANDLE hout = GetStdHandle(STD_OUTPUT_HANDLE);
cover(hout);
struct Snake s, *snake=&s;
struct Food f, *food=&f;
makeframe(*snake);
initsnake(snake);
printfood(hout,snake,food);
Sleep(500);
while(1){
infor(hout,snake);
//保存蛇尾横纵坐标
a[0]=snake->x[0];
a[1]=snake->y[0];
j=0;
//如果用户敲击键盘
if(kbhit()){
//用ch接收输入 ,注意是getch(),不需敲击回车
ch=getch();
if(kbhit()){
//长按时间
Sleep(20);
j=1;
}
}
switch(ch){
//向上移动
case'W':
case 'w' :
case 72:{
movesnake(hout,snake);
//蛇头纵坐标减一
snake->y[snake->length-1]-=1;
break;
}
//向下移动
case'S':
case 's':
case 80:{
movesnake(hout,snake);
//蛇头纵坐标加一
snake->y[snake->length-1]+=1;
break;
}
//向左移动
case'A':
case 'a':
case 75:{
movesnake(hout,snake);
//蛇头横坐标减二
snake->x[snake->length-1]-=2;
break;
}
//向右移动
case'D':
case 'd':
case 77:{
movesnake(hout,snake);
//蛇头横坐标加二
snake->x[snake->length-1]+=2;
break;
}
}
eatfood(hout,snake,food);
printsnake(hout,snake);
//如果判断蛇死亡,跳出循环
if(ifdead(snake)==0||ch==27||snake->speed==0){
Gotoxy(hout,framex+wide/2,framey-2);
if(snake->speed==0)
printf("恭喜你通关了!!!");
else
printf("糟糕 T_T");
break;
}
if(j==0)
//如果没有长按,蛇滞留的时间为
Sleep(snake->speed);
//如果长按,蛇滞留的时间为 20ms,即加速
else
Sleep(20);
}
//跳出循环时 ,滞留死亡场景一段时间
Sleep(3000);
//清屏
system("cls");
//显示结束界面
if(snake->speed==0) {
printf("\n\n\n\n\n\t\t\t哈哈,你赢了\n\n\t\t\t你得到了满分:24\n\n\n");return 24;}
else {
printf("\n\n\n\n\n\t\t\t哈哈,你输了\n\n\t\t\t你的最终得分是:%d\n\n\n",snake->count);return snake->count; }
Sleep(3000);
return 0;
}
int psss()
{
string what[3]={"石头","剪刀","布"};
int n,m,i,j,k;
for(i=0;i<=2;i++)
printf("%d.%s\n",i,what[i].c_str());
cout<<"你出什么?";
cin>>n;
srand(time(0));
m=random(0,2);
cout<<"你出的是"<<what[n]<<",老板出了"<<what[m];
switch(n-m)
{
case -1:
case 2:cout<<"你赢了!";return 2;
case 0:cout<<"平局!";return 1;
default:cout<<"你输了!";return 0;
}
}
bool saolei(){
int delta[8][2] = {{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}};
int row =0,col = 0,num = 0;
char map[10][10] = {0};
char show[10][10] = {0};
srand(time(0));
for(row = 0;row <= 9;row++){
for(col = 0;col <= 9;col++){
map[row][col] = '0';
}
}
do{
row = rand() % 10;
col = rand() % 10;
if(map[row][col] == '0'){
map[row][col] = 'x';
num++;
}
}while(num < 10);
for (row = 0;row <= 9;row++){
for (col = 0;col <= 9;col++){
if(map[row][col] != 'x'){
int cnt = 0;
for (num = 0;num <= 7;num++){
if(row + delta[num][0] < 0){
continue;
}
if(row + delta[num][0] > 9){
continue;
}
if(col + delta[num][1] < 0){
continue;
}
if(col + delta[num][1] > 9){
continue;
}
if(map[row + delta[num][0]][col + delta[num][1]]== 'x'){
cnt++;
}
}
map[row][col] = '0' + cnt;
}
}
}
for (row = 0;row < 10;row++){
for(col = 0;col < 10;col ++){
printf("* ");
}
printf("\n");
}
num = 0;
int x,y;
do{
printf("please enter the coordinate of array:");
scanf("%d%d",&x,&y);
show[x-1][y-1] = 1;
if(map[x-1][y-1] == '0'){
for (num = 0;num <= 7;num++){
if(x-1 + delta[num][0] < 0){
continue;
}
if(x-1 + delta[num][0] > 9){
continue;
}
if(y -1+ delta[num][1] < 0){
continue;
}
if(y-1 + delta[num][1] > 9){
continue;
}
show[x-1+delta[num][0]][y-1+delta[num][1]] = 1;
}
}
if (map[x-1][y-1]!= 'x'&&map[x-1][y-1] != '0'){
for (num = 0;num <= 7;num++){
int cnt = 0;
if(x-1 + delta[num][0] < 0){
continue;
}
if(x-1 + delta[num][0] > 9){
continue;
}
if(y-1 + delta[num][1] < 0){
continue;
}
if(y-1 + delta[num][1] > 9){
continue;
}
if( map[x -1 + delta[num][0]][y -1+ delta[num][1]] != 'x'){
show[x-1 + delta[num][0]][y -1+ delta[num][1]] = 1 ;
}
}
}
if(map[x-1][y-1] == 'x') {
printf("game over!\n");
for (row = 0;row < 10;row++){
for(col = 0;col < 10;col ++){
printf("%c ",map[row][col]);
}
printf("\n");
}
return 0;
}
system("cls");
printf("mine sweeping:\n");
for (row = 0;row < 10;row++){
for(col = 0;col < 10;col ++){
if (show[row][col] == 1)
{
printf("%c ", map[row][col]);
}
else
{
printf("* ");
}
}
printf("\n");
}
num = 0;
for (row = 0;row < 10;row++){
for(col = 0;col < 10;col ++){
if (show[row][col] == 1 )
{
num++;
}
}
}
printf("num:%d\n",num);
}while(num < 90);
printf("you win!");
return 1;
}
int dazi()
{
string Right="tyduafidooduaepepeidiaeofpdiaepdd\nincldiepapdpeedfidncfidkdledeidd\njdicndleiicneldiapapppeodmcmcadfad\naofdahldkfiehalfdfhoea\n$#$#$!$#@><$dfa>#?!$32>$!#@?\n>$!#@?$#314321FSAD?$@!\nFAdfadl.3$!@#>afdsk4ml132>adfadsl\njflasdfiawehochodackodhiossdjafoisjoifudhalfdlsfhwe8hlfefafjeiajfls\nhfadshioewclzxkdjhfldshadsujcndalheicdjalfsd\nhfdshioqwefawiew#$#!ndafslkdwifdsalhuwoiefdsaiufhuefohoeiafdsa\nfqwelcdxnzleuwiqrwiofadsjflsdfjldsaj\nhfkdlsffhklashflwiuehcnczksiewaolkdsahifls\nhflaidshiohafusehriokndasfjihlueo\nfhakdsfhwei#$!#@$kadhf#R9ofa#$dsf89ewq#$sdfihf3#R;sdfEWQ#RFDSFEAqliru9dss\n";
char c;
printf("在屏幕上打出这段话,随时按`加enter结束(随时可以按回车,不算错字)\n\n%s\n",Right.c_str());
char ch;
int n=0,right=0;
time_t t1,t2;
time(&t1);
while(1)
{
ch=_getch();
cout<<ch;
if (ch==Right[n])
right++;
if (ch=='`')
break;
n++;
}
time(&t2);
printf("\n总的输入字符数;%d",n);
printf("\n对的字符数:%d",right);
printf("\n总时长:%d秒",t2-t1);
printf("\n平均录入速度;%.2f/s",1.0*right/(t2-t1));
printf("\n平均每分钟速度:%.2f/s",1.0*right/(t2-t1)*60);
int S=1;
printf("\n段位:");
int s=1.0*right/(t2-t1)*60;
if (s>=0&&s<50)
printf("LV.1初学者");
if (s>=50&&s<100)
printf("LV.2有点水平");
if (s>=100&&s<150)
printf("LV.3超越正常人");
if (s>=150&&s<220)
printf("LV.4编程队员的水平");
if (s>=220&&s<300)
printf("LV.5程序猿");
if (s>=300&&s<400)
printf("LV.6速度不是盖的");
if (s>=400&&s<480)
printf("LV.7打字能手");
if (s>=480&&s<550)
printf("LV.8超级程序员");
if (s>=550&&s<650)
printf("LV.9电脑大师");
if (s>=650&&s<850)
printf("LV.10计算机大佬");
if (s>=850)
printf("LV.11世界冠军");
return s;
}
int const ROW = 4;
int const COL = 4;
int gamemap[ROW][COL] = {0};
//上下左右
int const UP = 1;
int const DOWN = 2;
int const LEFT = 3;
int const RIGHT = 4;
//游戏所处的状态
int const GAME_OVER = 1;
int const GAME_WIN = 2;
int const GAME_CONTINUE = 3;
enum GameNum
{
Game_2 = 2,
Game_4 = 4,
Game_8 = 8,
Game_16 = 16,
Game_32 = 32,
Game_64 = 64,
Game_128 = 128,
Game_256 = 256,
Game_512 = 512,
Game_1024 = 1024,
Game_2048 = 2048,
};
//打印所得的数组
void Print()
{
system("cls");
cout << "***************** 2048 小 游 戏 ******************" << endl;
cout << "***************** GAME 2048 ******************" << endl << endl;
for (int i = 0; i < ROW; ++i)
{
cout << "---------------------------------"<< endl;
for (int j = 0; j < COL; ++j)
{
if (gamemap[i][j] == 0)
{
cout <<"| \t";
}
else
{
cout <<"| " << gamemap[i][j] << "\t";
}
}
cout << "|" << endl;
}
cout << "---------------------------------"<< endl;
}
bool CreateNumber()
{
int x = -1;
int y = -1;
int times = 0;
int maxTimes = ROW * COL;
//三分之二的概率生成2,三分之一的概率生成4
int whitch = rand() % 3;
do
{
x = rand() % ROW;
y = rand() % COL;
++times;
} while (gamemap[x][y] != 0 && times <= maxTimes);
//说明格子已经满了
if(times >= maxTimes)
{
return false;
}
else
{
GameNum num;
if(whitch == 0)
{
num = Game_4;
}
else if(whitch)
{
num = Game_2;
}
gamemap[x][y] = num;
}
return true;
}
void Process(int direction)
{
switch (direction)
{
case UP:
//最上面一行不动
for(int row = 1; row < ROW; ++row)
{
for(int crow = row; crow >= 1; --crow)
{
for(int col = 0; col < COL; ++col)
{
//上一个格子为空
if(gamemap[crow-1][col] == 0)
{
gamemap[crow-1][col] = gamemap[crow][col];
gamemap[crow][col] = 0;
}
else
{
//合并
if(gamemap[crow-1][col] == gamemap[crow][col])
{
gamemap[crow - 1][col] *= 2;
gamemap[crow][col] = 0;
}
}
}
}
}
break;
case DOWN:
//最下面一行不动
for(int row = ROW - 2; row >= 0; --row)
{
for(int crow = row; crow < ROW - 1; ++crow)
{
for(int col = 0; col < COL; ++col)
{
//上一个格子为空
if(gamemap[crow + 1][col] == 0)
{
gamemap[crow + 1][col] = gamemap[crow][col];
gamemap[crow][col] = 0;
}
else
{
//合并
if(gamemap[crow + 1][col] == gamemap[crow][col])
{
gamemap[crow + 1][col] *= 2;
gamemap[crow][col] = 0;
}
}
}
}
}
break;
case LEFT:
//最左边一列不动
for(int col = 1; col < COL; ++col)
{
for(int ccol = col; ccol >= 1; --ccol)
{
for(int row = 0; row < ROW; ++row)
{
//上一个格子为空
if(gamemap[row][ccol-1] == 0)
{
gamemap[row][ccol - 1] = gamemap[row][ccol];
gamemap[row][ccol] = 0;
}
else
{
//合并
if(gamemap[row][ccol - 1] == gamemap[row][ccol])
{
gamemap[row][ccol - 1] *= 2;
gamemap[row][ccol] = 0;
}
}
}
}
}
break;
case RIGHT:
//最右边一列不动
for(int col = COL - 2; col >= 0; --col)
{
for(int ccol = col; ccol <= COL - 2; ++ccol)
{
for(int row = 0; row < ROW; ++row)
{
//上一个格子为空
if(gamemap[row][ccol + 1] == 0)
{
gamemap[row][ccol + 1] = gamemap[row][ccol];
gamemap[row][ccol] = 0;
}
else
{
//合并
if(gamemap[row][ccol + 1] == gamemap[row][ccol])
{
gamemap[row][ccol + 1] *= 2;
gamemap[row][ccol] = 0;
}
}
}
}
}
break;
}
}
//处理输入输出,返回上下左右
int Input()
{
//读取上下左右四个方向键
int upArrow = 0;
int downArrow = 0;
int leftArrow = 0;
int rightArrow = 0;
int direction = 0;
while (true)
{
upArrow = GetAsyncKeyState(VK_UP);
downArrow = GetAsyncKeyState(VK_DOWN);
leftArrow = GetAsyncKeyState(VK_LEFT);
rightArrow = GetAsyncKeyState(VK_RIGHT);
if(upArrow)
{
direction = UP;
break;
}
else if(downArrow)
{
direction = DOWN;
break;
}
else if(leftArrow)
{
direction = LEFT;
break;
}
else if(rightArrow)
{
direction = RIGHT;
break;
}
}
return direction;
}
//判断游戏状态
int Judge()
{
//赢得游戏
for(int i = 0; i < ROW; ++i)
{
for(int j = 0; j < COL; ++j)
{
if(gamemap[i][j] == 2048)
{
return GAME_WIN;
break;
}
}
}
//横向检查
for(int i = 0 ; i < ROW; ++i)
{
for(int j = 0; j < COL - 1; ++j)
{
if(!gamemap[i][j] || (gamemap[i][j] == gamemap[i][j+1]))
{
return GAME_CONTINUE;
break;
}
}
}
//纵向检查
for(int j = 0; j< COL; ++j)
{
for(int i = 0; i < ROW -1; ++i)
{
if(!gamemap[i][j] || (gamemap[i][j] == gamemap[i+1][j]))
{
return GAME_CONTINUE;
break;
}
}
}
//不符合上述两种状况,游戏结束
return GAME_OVER;
}
bool game2048()
{
CreateNumber();
CreateNumber();
//数组初始化
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
gamemap[i][j]=0;
Print();
int direction = 0;
int gameState = -1;
while(true)
{
direction = Input();
gameState = Judge();
if(direction && gameState == GAME_CONTINUE)
{
Process(direction);
CreateNumber();
Print();
Sleep(100);
}
else if(gameState == GAME_WIN)
{
Print();
cout << "You Win!" << endl;
hdcj(2);
return 1;
}
else if(gameState == GAME_OVER)
{
Print();
cout <<"You lose!" << endl;
return 0;
}
}
}
void carnie()
{
cls();
while(1)
{
cout<<"欢迎来到游乐场~按下序号即可玩相应的游戏~\n";
const string where[]=
{"贪吃蛇","石头剪刀布","扫雷","打字游戏","2048","离开"};
int i,j,k,n,m;
for(i=0;i<=5;i++)
printf("%d.%s\n",i,where[i].c_str());
char l=_getch();
switch(l)
{
case '0':{
use(39);
happened+=(name+"在游乐场畅玩贪吃蛇/");
tepan();
things[8]-=5;
cls();
cout<<"你要押多少钱?(注:9分以下血本无归,10分获得50%押钱,11~13获得70%押钱,14获得90%,15获得100%,以后每分增加5%\n";
cin>>k;
if (things[7]<k)
{
cout<<"钱不够!";
break;
}
things[7]-=k;
float cl[25]=
{0,0,0,0,0,0,0,0,0,0,0.5,0.7,0.7,0.7,0.9,1,1.05,1.1,1.15,1.2,1.25,1.3,1.35,1.4,1.45};
n=Snake();
cls();
m=k*cl[n];
printf("你获得了:%d元",m);
things[7]+=m;
break;}
case '1':
{
use(40);
happened+=(name+"在游乐场和老板玩石头剪刀布/");
tepan();
things[8]-=5;
cls();
cout<<"你要押多少钱?(注:输了血本无归,平局回本,赢了双倍收获\n";
cin>>k;
if (things[7]<k)
{
cout<<"钱不够!";
break;
}
cls();
things[7]-=k;
n=psss();
if (n==1)
things[7]+=k;
if (n==2)
things[7]+=k*2;
break;
}
case '2':
{tepan();
use(41);
things[8]-=5;
cls();
cout<<"你要押多少钱?(注:输了血本无归,赢了双倍收获)\n";
cin>>k;
if (things[7]<k)
{
cout<<"钱不够!";
break;
}
cls();
things[7]-=k;
n=saolei();
if (n)
{
happened+=(name+"玩扫雷游戏,还成功了/");
cout<<"你赢了!";
things[7]+=k*2;
hdcj(40);
}
else
{
cout<<"你输了!";
happened+=(name+"在玩扫雷游戏时被雷炸飞了/");
}
break;
}
case '3':{tepan();
use(42);
things[8]-=5;
cout<<"你要押多少钱?(注:60每分钟以下没钱,60回本,以后每50增加10%)";
cin>>n;
if (things[7]<n)
{
cout<<"钱不够!";
break;
}
things[7]-=n;
j=dazi();
if (j>=250)
hdcj(8);
m=0;
if (j==60)
m=n;
if (j>60)
{
m=n*(1+(float(j/50)*0.1));
}
cout<<"你赚到了:"<<m<<"元!\n";
gs();
things[7]+=m;
break;}
case '4':
{
printf("你要押多少钱?(输了无钱,赢了双倍收获)\n");
cin>>m;
if (m>things[7])
{
cout<<"钱不够!";
break;
}
things[7]-=m;
if (game2048())
m*=2;
else
m=0;
things[7]+=m;
cout<<"你赚到了"<<m<<"元";
happened+=(name+"在游乐场玩2048/");
break;
}
case '5':tepan();
things[8]-=5;return;
case '/':
{
int num;
string dm;
string one,two,three,four;
cin>>dm>>one>>two>>three>>four;
cin>>num;
if (dm!="/")
break;
//gamemode
if (one=="gamemode"&&three=="*"&&four=="*")
things[21]=two[0]-'0';
//things
if (one=="gamethings"&&three=="of"&&four=="*")
{
int a,b;
a=(two[0]-'0')*100+(two[1]-'0')*10+(two[2]-'0')*1;
things[a]+=num;
}
//fost
if (one=="fost"&&three=="of"&&four=="*")
{
int a,b;
a=(two[0]-'0')*100+(two[1]-'0')*10+(two[2]-'0')*1;
fost[a]+=num;
}
break;
}
}
gs();
}
}
void market()
{
cout<<"WAH:小子,又来打工了啊,你这样的小身板还敢来人力市场!\n";
const string where[]=
{"搬砖(60%概率成功,得500块)(临工)","抄作业(100%概率成功,可以批量接受,但是要密码,100块)","文字录入(40%概率成功,1000)(临时工)","离开","找工作","领取挂机收益"};
int i,j,k,n,m;
while(1)
{cls();
for(i=0;i<6;i++)
printf("%d.%s\n",i,where[i].c_str());
char l=_getch();
tepan();
things[8]-=15;
switch(l)
{
case '0':
use(43);
happened+=(name+"在工地上搬砖/");
Sout("你费力地搬起一堆堆沉重的砖头,砖头却纹丝不动,你又使出了吃奶的劲儿。");
hdcj(28);
jdt(10);
if (rand()%5<=2)
{
cout<<"获得:500元";
things[7]+=500;
}
else
cout<<"WAH:你才搬了几块砖头?!没有工资!!";
gs();
break;
case '1':
{
cout<<"密码:";
bool Right=true;
string MM="ZJL20090206";
for(j=0;j<11;j++)
{
char m=_getch();
cout<<'*';
if (m!=MM[j])
Right=false;
}
if (Right)
{
happened+=(name+"窃取了抄作业的密码,疯狂抄作业/");
cout<<"抄几次?";
cin>>m;
jdt(10);
things[7]+=100*m;
}
else
{
cout<<"没有密码就别逞强!";
happened+=(name+"竟然没有密码也想抄作业赚钱/");
}
gs();
break;
}
case '2':
use(44);
Sout("你费力地看着一行行文字,感觉眼睛生疼,但是为了赚到钱,你拼了!");
jdt(10);
if (rand()%5<=1)
{
cout<<"获得1000元!";
things[7]+=1000;
}
else
cout<<"WAH:打错了好几个字,没有工资!!";
gs();
break;
case '3':return;
case '4':
{
use(45);
switch(things[28])
{
case 4:
cls();
Sout("老板:这位可是白云大学的呢!来这里!工资高!");
gs();
cout<<"你被SORT_TIS公司录取了,(挂机收益:70元/分钟)";
things[29]=70;
happened+=(name+"被SORT_TIS公司录取为高级程序员/");
break;
case 3:
cls();
Sout("老板:你是白云大学的啊。还不错哦~");
gs();
cout<<"你被WAMVA公司录取了,(挂机收益:55元/分钟)";
things[29]=55;
happened+=(name+"被WAMVA公司录取为经理/");
break;
case 2:
cls();
Sout("老板:emmmmm...白云大学,没听说过呢。");
gs();
cout<<"你被WMC公司录取了,(挂机收益:35元/分钟)";
happened+=(name+"被WMC公司录取为科长/");
things[29]=35;break;
case 1:
cls();
Sout("老板:(很为难的样子)白云大学,不怎么样啊,公司缺人,你还是来上班吧。。。");
gs();
cout<<"你被NOTSH公司录取了,(挂机收益10元/分钟)";
happened+=(name+"被NOTSH公司录取为一名普通职员/");
things[29]=10;break;
case 0:
cls();
Sout("老板:你连大学都没上啊,你去办公室扫地吧。。。");
gs();
cout<<"你被CLEAN_FLOOR公司录取了,(挂机收益3元/分钟)";
happened+=(name+"被CLEAN_FLOOR公司录取为清洁工/");
things[29]=3;
break;
}
break;
}
case '5':
{
use(46);
time_t temp;
time(&temp);
m=temp-start;
cout<<"挂机开始时间:"<<start<<'\n';
cout<<"挂机结束时间:"<<temp<<'\n';
cout<<"你挂机了"<<m<<"秒\n";
m/=60;
if (m>=480)
hdcj(29);
if (m>=2880)
hdcj(30);
cout<<"你已经挂机了"<<m<<"分钟\n";
if (m>=things[30])
m=things[30];
cout<<"收益:"<<things[29]<<"元/分钟\n";
cout<<"获得:"<<m*things[29]<<"元钱!\n";
things[7]+=things[29]*m;
time_t te;
time(&te);
start=te;
gs();
break;
}
}
}
}
void Duchang()
{
cls();
srand(time(0));
cout<<"WYQ:小子,又来赌场了啊,哈哈哈";
const string where[]=
{"赌大小","猜数","彩票","取数游戏","离开"};
int i,j,k,n,m;
while(1)
{
cls();
for(i=0;i<5;i++)
{
printf("%d.%s\n",i,where[i].c_str());
}
char l=_getch();
tepan();
things[8]-=10;
switch(l)
{
case '0':
{
use(47);
hdcj(16);
system("cls");
cout<<"1-大 2-小\n";
cin>>m;
cout<<"赌多少钱?";
cin>>i;
k=0;
if (things[7]<i)
{
cout<<"钱不够!";
break;
}
things[7]-=i;
for(j=1;j<=6;j++)
{
n=rand()%6+1;
printf("%d\n",n);
k+=n;
}
if (k>21)
j=1;
else
j=0;
if (m==j)
{
cout<<"赚到了!";
things[7]+=i*2;
happened+=(name+"在赌场大赚一笔/");
}
else
{
cout<<"血本无归!";
happened+=(name+"在赌场血亏/");
}
break;
}
case '1':
{
use(48);
cout<<"赌多少钱?";
cin>>i;
k=0;
if (things[7]<i)
{
cout<<"钱不够!";
break;
}
things[7]-=i;
n=random(1,50);
for(j=1;j<=6;j++)
{
system("cls");
cout<<"猜一个数,1~50之间,你还有"<<7-j<<"次机会\n";
cin>>m;
if (m>n)
cout<<"Too big!";
if (m<n)
cout<<"Too small!";
if (m==n)
{
things[69]++;
cout<<"猜中了!你赚到了"<<i*2<<"元!";
happened+=(name+"在猜数游戏中赚了很多钱/");
things[7]+=i*2;
break;
}
gs();
}
if (j==7)
{
cout<<"血本无归!";
happened+=(name+"竟然连猜数游戏都猜不中/");
things[69]=0;
}
if (things[69]>=5)
hdcj(37);
break;
}
case '2':
{
use(49);
int a[6]={0,1,100,10000,500000,1000},b[6]={0,100,10000,500000,10000000,1000000};
int c[6]={0,20,10,5,4,1};
cout<<"你要买什么彩票?\n";
cout<<"1.1-->100 20%概率中\n";
cout<<"2.100-->10000 10%\n";
cout<<"3.10000-->500000 5%\n";
cout<<"4.500000-->10000000 4%\n";
cout<<"5.1000 --> 1000000 1%\n";
cin>>m;
if (things[7]<a[m]){
cout<<"钱不够!";break;}
if (rand()%100+1<=c[m])
{
cout<<"中奖了!简直是好运附体!";
happened+=(name+"买彩票中奖了!/");
things[7]+=b[m];
}
else
{
cout<<"毛都没抽到!";
happened+=(name+"早上没洗脸,买彩票遭血亏/");
}
break;
}
case '3':
{
cls();
cout<<"赌多少钱?\n";
cin>>m;
if (things[7]>=m)
things[7]-=m;
else
{
cout<<"钱不够";
break;
}
int a[21];
cls();
for(i=1;i<=20;i++)
a[i]=random(1,10000);
for(i=1;i<=20;i++)
{
gotoxy(0,0);
cout<<a[i]<<' ';
gotoxy(1,0);
cout<<"1.选择 2.下一个";
char l=_getch();
switch(l)
{
case '1':k=a[i];i=5555;
case '2':break;
}
}
j=0;
for(i=1;i<=20;i++)
j+=(a[i]>k);
cls();
cout<<"得分:"<<20-j;
switch(j)
{
case 0:k=400;break;
case 1:k=330;break;
case 2:k=260;break;
case 3:k=185;break;
case 4:k=115;break;
case 5:k=84;break;
default:k=0;break;
}
m*=(k/100.0);
cout<<"\n赚了"<<m<<"元\n";
cout<<"序列为:";
for(i=1;i<=20;i++)
cout<<a[i]<<' ';
things[7]+=m;
gs();
break;
}
case '4':return;
}
gs();
}
}
void Mid_School()
{
const string where[]={"家(存档的地方)","学校(学习的地方)","小超市(购物的地方)","公园(运动)","游乐场(玩耍,赚点零花钱)","保存并退出","关于游戏","自杀","人力市场","赌场"};
int i,j,k,n,m,l;
while(1)
{
cls();
if (things[0]>=4)
return;
if (things[10]>=18)
things[0]++;
cout<<" Day "<<things[16]+((things[10]-6)*30)<<'\n';
cout<<"你想去哪里,按下序号\n";
for(i=0;i<10;i++)
printf("%d.%s\n",i,where[i].c_str());
char s=_getch();
switch(s)
{
case '0':home();break;
case '1':school();break;
case '2':shop();break;
case '3':park();break;
case '4':carnie();break;
case '5':Write_File();exit(0);
case '6':about();break;
case '7':Sout("Ftr:????");Die();break;
case '8':market();break;
case '9':Duchang();break;
}
}
}
int Exa()
{
use(50);
string q[100],a[100],b;
int i,j,k;
int n,m;
n=50;
q[1]="赌场老板叫什么名字?";
a[1]="WYQ";
q[2]="作者的生日你打算送什么?(Tips:水题)";
a[2]="GIFT";
q[3]="作者生活在哪个城市?(格式:例如广东广州为GDGZ)";
a[3]="GDDG";
q[4]="中序遍历的顺序?(父节点F,左节点L,右节点R)";
a[4]="LFR";
q[5]="1.01的12次方?(精确结果)";
a[5]="1.126825030131969720661201";
q[6]="360分解质因数的结果是:(Tips:格式,假如数据是35,那么输入结果为5*7";
a[6]="2*2*2*3*3*5";
q[7]="雪米拉的儿子叫什么?";
a[7]="DM";
q[8]="布鲁特斯是谁的老师?";
a[8]="KASS";
q[9]="克艾索斯和百夫长的决斗中谁赢了?";
a[9]="KASS";
q[10]="沙暴天气是谁释放的?(称号)";
a[10]="QZ";
q[11]="冰雪世界是谁的必杀技?";
a[11]="KZD";
q[12]="MC创作于哪一年?";
a[12]="2009";
q[13]="作者的出生日期?";
a[13]="20090206";
q[14]="MC的吉祥物是JS,KL和_____";
a[14]="PXZ";
q[15]="凋零的血量是:";
a[15]="600";
q[16]="MC最强的附魔属性是:";
a[16]="JYXB";
q[17]="用锋利V的木剑打人造成的伤害是多少?";
a[17]="12";
q[18]="娑丽丝的外号?";
a[18]="HL";
q[19]="扎普拉尔的克星?";
a[19]="LKLDY";
q[20]="三体星系就是______";
a[20]="BRMZ";
int num=19;
int wincount=0;
bool quested[100];
memset(quested,0,sizeof(quested));
string yourans;
int count=0;
while(count<=19)
{
system("cls");
int number=rand()%num+1;
while(quested[number])number=rand()%num+1;
for(i=0;i<19;i++)
if (quested[i]==0)
break;
if (i>=19)
break;
cout<<"第";cout<<count;cout<<"轮"<<endl;
w_out(""),w_out(q[number]);
cout<<endl<<"请回答:";
string yourans;
cin>>yourans;
if(yourans==a[number])
{
w_out("恭喜你,你答对了!");
wincount++;
w_out("你已经累计答对"),cout<<wincount<<"次!";
cout<<endl;
_getch();
}
else
{
w_out("很抱歉,你答错了");
w_out("正确答案是:"),cout<<a[number]<<endl;
_getch();
}
quested[number]=1;
count++;
if (count>=19)
break;
}
happened+=(name+"参加了高考/");
Sout("你已经答完了题库中现有的所有题!你的正确率是");
printf("%llf",(wincount*1.0)/(num*1.0)*100);
cout<<"%"<<endl;
Sout("\n你的得分是:");
cout<<wincount*38;
_getch();
return wincount*38;
}