推箱子的小游戏

系统:linux
语言:C
源码如下

#include<stdio.h>
#include<stdlib.h>

//whether to allow to pull box
#define PULL_BOX 1

//whether to move only one step at a time
#define ONE_STEP 0

struct box{
int *level;
int row;
int col;
int num;
};

int p_row,p_col; //person location
int perfect_box;

/*ASCII detects the input value,up(w) down(s) left(a) right(d) return "1 2 3 4"
 *pulls the box return "5678"
 *q returns -1, u returns -2,n returns -3,
 *and the others returns -99
 */
int scanf_dire(){
char a;
a=getchar();
for(;a==10;){
	a=getchar();
	}
switch(a){
	case 113:
		return -1;
	case 117:
		return -2;
	case 110:
		return -3;
	case 119:
		return 1;
	case 97:
		return 3;
	case 115:
		return 2;
	case 100:
		return 4;
#if PULL_BOX
	case 105:
		return 5;
	case 107:
		return 6;
	case 106:
		return 7;
	case 108:
		return 8;
#endif
}
if(a==27 && (a=getchar())==91){
	a=getchar();
	switch(a){
	case 65:
		return 1;
	case 66: 
		return 2;
	case 67: 
		return 4;
	case 68: 
		return 3;
	default:
		break;
		}
	}
return -99;
}

//get a number
int scanf_number(){
int num;
	for(;!scanf("%d",&num);){
	char ch;
	while((ch = getchar()) != '\n' && ch != EOF);
	printf("please input right number:");
	}
return num;
}

/*print level information(including level,steps,...), count the number of perfect boxes,
 *locate person
 */
void printf_map(struct box* level_tmp,int level,int steps){
int i,j,k;
printf("\033[2J");
printf("\033[H");
printf("---------------------------------------\n");
printf("level:%d",level);
if(steps>0){
	printf("  steps:%d",steps);
	}
printf("\n---------------------------------------\n");
perfect_box=0;
for(i=0;i<level_tmp->row;i++){
	for(j=0;j<level_tmp->col;j++){
		k=*(level_tmp->level+i*level_tmp->col+j);
		switch(k){
			case -1:
				printf("▓");//wall
				break;
			case 1:
				printf("☺");//person
				p_row=i;
				p_col=j;
				break;
			case 2:
				printf("●");//box
				break;
			case 3:
				printf("◎");//box's aim
				break;
			case 4:
				printf("☺");//person on box's aim
				p_row=i;
				p_col=j;
				break;
			case 5:
				printf("◉");//perfect box
				perfect_box++;
				break;
			default:
				printf(" ");//none
				break;
			}
		}
	printf("\n");
	}
}

//pull box
int p_move_oppo(struct box* level_tmp,int option){
int k,k_d,k_dd,offset,offset_d;
switch(option){
	case 5:
		offset=(p_row-1)*level_tmp->col+p_col;
		offset_d=(p_row+1)*level_tmp->col+p_col;
		break;
	case 6:
		offset=(p_row+1)*level_tmp->col+p_col;
		offset_d=(p_row-1)*level_tmp->col+p_col;
		break;
	case 7:
		offset=p_row*level_tmp->col+p_col-1;
		offset_d=p_row*level_tmp->col+p_col+1;
		break;
	case 8:
		offset=p_row*level_tmp->col+p_col+1;
		offset_d=p_row*level_tmp->col+p_col-1;
		break;
	default:
		break;
	}
k=*(level_tmp->level+(p_row)*level_tmp->col+p_col);
k_d=*(level_tmp->level+offset);
k_dd=*(level_tmp->level+offset_d);
switch(k_d){
	case 0:
	case 3:
		(*(level_tmp->level+(p_row)*level_tmp->col+p_col))--;
		(*(level_tmp->level+offset))++;
		switch(k_dd){
			case 2:
			case 5:
				*(level_tmp->level+offset_d)-=2;
				*(level_tmp->level+(p_row)*level_tmp->col+p_col)+=2;
				break;
			default:
				break;
			}
		return 1;
		break;
	default:
		return 0;
		break;
	}
}

//push box
int p_move(struct box* level_tmp,int option){
int k,k_d,k_dd,offset,offset_d;
switch(option){
	case 1:
		offset=(p_row-1)*level_tmp->col+p_col;
		offset_d=(p_row-2)*level_tmp->col+p_col;
		break;
	case 2:
		offset=(p_row+1)*level_tmp->col+p_col;
		offset_d=(p_row+2)*level_tmp->col+p_col;
		break;
	case 3:
		offset=p_row*level_tmp->col+p_col-1;
		offset_d=p_row*level_tmp->col+p_col-2;
		break;
	case 4:
		offset=p_row*level_tmp->col+p_col+1;
		offset_d=p_row*level_tmp->col+p_col+2;
		break;
	default:
		break;
	}
k=*(level_tmp->level+(p_row)*level_tmp->col+p_col);
k_d=*(level_tmp->level+offset);
k_dd=*(level_tmp->level+offset_d);
switch(k_d){
	case 2:
	case 5:
		switch(k_dd){
			case 0:
			case 3:
				*(level_tmp->level+offset_d)+=2;
				(*(level_tmp->level+offset))-=2;
				break;
			default:
				break;
			}
		if(k_dd!=0&&k_dd!=3){
			break;
			}
	case 0:
	case 3:
		(*(level_tmp->level+(p_row)*level_tmp->col+p_col))--;
		(*(level_tmp->level+offset))++;
		return 1;
		break;
	default:
		return 0;
		break;
	}
}

//printf menu
void printf_menu(){
printf("\033[2J");
printf("\033[H");
printf("************************************************\n\n");
printf("  1->start game\n");
printf("  2->reading instruction\n");
printf("  99->exit game\n");
printf("\n************************************************\n");
}

//printf caption
void printf_cap(){
printf("\033[2J");
printf("\033[H");
printf("************************************************\n");
printf("1.You should push boxes to right destination\n");
printf("2.The move regulations:\n");
printf("  use    w    or   ↑     to push boxes \n");
printf("       a s d     ← ↓ →    \n\n");
printf("         i    to pull boxes\n");
printf("       j k l\n");
printf("     (The reason is that I didn't set back keys!\n");
printf("      you can close this function at start of\n");
printf("      the source code.)\n\n");
printf("     q:return to main menu\n");
printf("     u:restart this level\n");
printf("     n:go to the next level\n");
printf("\n3.When choosing [y/n],key 'y' for [y],others for [n]\n");
printf("\n4.I hope you have a good time!\n");
printf("************************************************\n");
printf("press any key to return main menu!\n");
getchar();
getchar();
}

int main(){
int option,op_menu,op_menu_2,start_level,level_over;
struct box box_level;
struct box* level_tmp;
int level_1[11][19]={
{ 0, 0, 0, 0,-1,-1,-1,-1,-1,},
{ 0, 0, 0, 0,-1, 0, 0, 0,-1,},
{ 0, 0, 0, 0,-1, 2, 0, 0,-1,},
{ 0, 0,-1,-1,-1, 0, 0, 2,-1,-1,},
{ 0, 0,-1, 0, 0, 2, 0, 2, 0,-1,},
{-1,-1,-1, 0,-1, 0,-1,-1, 0,-1, 0, 0, 0,-1,-1,-1,-1,-1,-1,},
{-1, 0, 0, 0,-1, 0,-1,-1, 0,-1,-1,-1,-1,-1, 0, 0, 3, 3,-1,},
{-1, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3,-1,},
{-1,-1,-1,-1,-1, 0,-1,-1,-1, 0,-1, 1,-1,-1, 0, 0, 3, 3,-1,},
{ 0, 0, 0, 0,-1, 0, 0, 0, 0, 0,-1,-1,-1,-1,-1,-1,-1,-1,-1,},
{ 0, 0, 0, 0,-1,-1,-1,-1,-1,-1,-1,},
};
int level_2[10][14]={
{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,},
{-1, 3, 3, 0, 0,-1, 0, 0, 0, 0, 0,-1,-1,-1,},
{-1, 3, 3, 0, 0,-1, 0, 2, 0, 0, 2, 0, 0,-1,},
{-1, 3, 3, 0, 0,-1, 2,-1,-1,-1,-1, 0, 0,-1,},
{-1, 3, 3, 0, 0, 0, 0, 1, 0,-1,-1, 0, 0,-1,},
{-1, 3, 3, 0, 0,-1, 0,-1, 0, 0, 2, 0,-1,-1,},
{-1,-1,-1,-1,-1,-1, 0,-1,-1, 2, 0, 2, 0,-1,},
{ 0, 0,-1, 0, 2, 0, 0, 2, 0, 2, 0, 2, 0,-1,},
{ 0, 0,-1, 0, 0, 0, 0,-1, 0, 0, 0, 0, 0,-1,},
{ 0, 0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,},
};
int level_3[10][17]={
{ 0, 0, 0, 0, 0, 0, 0, 0,-1,-1,-1,-1,-1,-1,-1,-1,},
{ 0, 0, 0, 0, 0, 0, 0, 0,-1, 0, 0, 0, 0, 0, 1,-1,},
{ 0, 0, 0, 0, 0, 0, 0, 0,-1, 0, 2,-1, 2, 0,-1,-1,},
{ 0, 0, 0, 0, 0, 0, 0, 0,-1, 0, 2, 0, 0, 2,-1,},
{ 0, 0, 0, 0, 0, 0, 0, 0,-1,-1, 2, 0, 2, 0,-1,},
{-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 2, 0,-1, 0,-1,-1,-1,},
{-1, 3, 3, 3, 3, 0, 0,-1,-1, 0, 2, 0, 0, 2, 0, 0,-1,},
{-1,-1, 3, 3, 3, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0,-1,},
{-1, 3, 3, 3, 3, 0, 0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,},
{-1,-1,-1,-1,-1,-1,-1,-1,},
};
int level_4[14][19]={
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-1,-1,-1,-1,-1,-1,-1,-1,},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-1, 0, 0, 3, 3, 3, 3,-1,},
{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 3, 3, 3, 3,-1,},
{-1, 0, 0, 0, 0,-1, 0, 0, 2, 0, 2, 0, 0, 0, 3, 3, 3, 3,-1,},
{-1, 0, 2, 2, 2,-1, 2, 0, 0, 2, 0,-1, 0, 0, 3, 3, 3, 3,-1,},
{-1, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0,-1, 0, 0, 3, 3, 3, 3,-1,},
{-1, 0, 2, 2, 0,-1, 2, 0, 2, 0, 2,-1,-1,-1,-1,-1,-1,-1,-1,},
{-1, 0, 0, 2, 0,-1, 0, 0, 0, 0, 0,-1,},
{-1,-1, 0,-1,-1,-1,-1,-1,-1,-1,-1,-1,},
{-1, 0, 0, 0, 0,-1, 0, 0, 0, 0,-1,-1,},
{-1, 0, 0, 0, 0, 0, 2, 0, 0, 0,-1,-1,},
{-1, 0, 0, 2, 2,-1, 2, 2, 0, 0, 1,-1,},
{-1, 0, 0, 0, 0,-1, 0, 0, 0, 0,-1,-1,},
{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,},
};
int level_5[13][17]={
{ 0, 0, 0, 0, 0, 0, 0, 0,-1,-1,-1,-1,-1,},
{ 0, 0, 0, 0, 0, 0, 0, 0,-1, 0, 0, 0,-1,-1,-1,-1,-1,},
{ 0, 0, 0, 0, 0, 0, 0, 0,-1, 0,-1, 2,-1,-1, 0, 0,-1,},
{ 0, 0, 0, 0, 0, 0, 0, 0,-1, 0, 0, 0, 0, 0, 2, 0,-1,},
{-1,-1,-1,-1,-1,-1,-1,-1,-1, 0,-1,-1,-1, 0, 0, 0,-1,},
{-1, 3, 3, 3, 3, 0, 0,-1,-1, 0, 2, 0, 0, 2,-1,-1,-1,},
{-1, 3, 3, 3, 3, 0, 0, 0, 0, 2, 0, 2, 2, 0,-1,-1,},
{-1, 3, 3, 3, 3, 0, 0,-1,-1, 2, 0, 0, 2, 0, 1,-1,},
{-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 2, 0, 0,-1,-1,},
{ 0, 0, 0, 0, 0, 0, 0, 0,-1, 0, 2, 0, 2, 0, 0,-1,},
{ 0, 0, 0, 0, 0, 0, 0, 0,-1,-1,-1, 0,-1,-1, 0,-1,},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-1, 0, 0, 0, 0,-1,},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-1,-1,-1,-1,-1,-1,},
};
int level_6[11][12]={
{-1,-1,-1,-1,-1,-1, 0, 0,-1,-1,-1,},
{-1, 3, 3, 0, 0,-1, 0,-1,-1, 1,-1,-1,},
{-1, 3, 3, 0, 0,-1,-1,-1, 0, 0, 0,-1,},
{-1, 3, 3, 0, 0, 0, 0, 0, 2, 2, 0,-1,},
{-1, 3, 3, 0, 0,-1, 0,-1, 0, 2, 0,-1,},
{-1, 3, 3,-1,-1,-1, 0,-1, 0, 2, 0,-1,},
{-1,-1,-1,-1, 0, 2, 0,-1, 2, 0, 0,-1,},
{ 0, 0, 0,-1, 0, 0, 2,-1, 0, 2, 0,-1,},
{ 0, 0, 0,-1, 0, 2, 0, 0, 2, 0, 0,-1,},
{ 0, 0, 0,-1, 0, 0,-1,-1, 0, 0, 0,-1,},
{ 0, 0, 0,-1,-1,-1,-1,-1,-1,-1,-1,-1,},
};
int level_7[12][13]={
{ 0, 0, 0, 0, 0, 0, 0,-1,-1,-1,-1,-1,},
{ 0,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1,},
{-1,-1, 0,-1, 0, 1,-1,-1, 0, 2, 2, 0,-1,},
{-1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,-1,},
{-1, 0, 0, 2, 0, 0,-1,-1,-1, 0, 0, 0,-1,},
{-1,-1,-1, 0,-1,-1,-1,-1,-1, 2,-1,-1,-1,},
{-1, 0, 2, 0, 0,-1,-1,-1, 0, 3, 3,-1,},
{-1, 0, 2, 0, 2, 0, 2, 0, 3, 3, 3,-1,},
{-1, 0, 0, 0, 0,-1,-1,-1, 3, 3, 3,-1,},
{-1, 0, 2, 2, 0,-1, 0,-1, 3, 3, 3,-1,},
{-1, 0, 0,-1,-1,-1, 0,-1,-1,-1,-1,-1,},
{-1,-1,-1,-1,},
};
int level_8[16][16]={
{ 0, 0,-1,-1,-1,-1,},
{ 0, 0,-1, 0, 0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,},
{ 0, 0,-1, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 2, 0,-1,},
{ 0, 0,-1, 0, 2,-1, 0, 2, 0,-1, 0, 0, 2, 0, 0,-1,},
{ 0, 0,-1, 0, 0, 2, 0, 2, 0, 0,-1, 0, 0, 0, 0,-1,},
{-1,-1,-1, 0, 2,-1, 0,-1, 0, 0,-1,-1,-1,-1, 0,-1,},
{-1, 1,-1, 2, 0, 2, 0, 2, 0, 0,-1,-1, 0, 0, 0,-1,},
{-1, 0, 0, 0, 0, 2, 0,-1, 2,-1, 0, 0, 0,-1, 0,-1,},
{-1, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 2, 0, 2, 0,-1,},
{-1,-1,-1,-1,-1, 0, 0,-1,-1,-1,-1,-1,-1,-1,-1,-1,},
{ 0, 0,-1, 0, 0, 0, 0, 0, 0,-1,},
{ 0, 0,-1, 0, 0, 0, 0, 0, 0,-1,},
{ 0, 0,-1, 3, 3, 3, 3, 3, 3,-1,},
{ 0, 0,-1, 3, 3, 3, 3, 3, 3,-1,},
{ 0, 0,-1, 3, 3, 3, 3, 3, 3,-1,},
{ 0, 0,-1,-1,-1,-1,-1,-1,-1,-1,},
};
int level_9[14][17]={
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-1,-1,-1,-1,-1,-1,-1,},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-1, 0, 0, 3, 3, 3,-1,},
{ 0, 0, 0, 0, 0, 0,-1,-1,-1,-1,-1, 0, 0, 3, 3, 3,-1,},
{ 0, 0, 0, 0, 0, 0,-1, 0, 0, 0, 0, 0, 0, 3, 0, 3,-1,},
{ 0, 0, 0, 0, 0, 0,-1, 0, 0,-1,-1, 0, 0, 3, 3, 3,-1,},
{ 0, 0, 0, 0, 0, 0,-1,-1, 0,-1,-1, 0, 0, 3, 3, 3,-1,},
{ 0, 0, 0, 0, 0,-1,-1,-1, 0,-1,-1,-1,-1,-1,-1,-1,-1,},
{ 0, 0, 0, 0, 0,-1, 0, 2, 2, 2, 0,-1,-1,},
{ 0,-1,-1,-1,-1,-1, 0, 0, 2, 0, 2, 0,-1,-1,-1,-1,-1,},
{-1,-1, 0, 0, 0,-1, 2, 0, 2, 0, 0, 0,-1, 0, 0, 0,-1,},
{-1, 1, 0, 2, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 2, 0,-1,},
{-1,-1,-1,-1,-1,-1, 0, 2, 2, 0, 2, 0,-1,-1,-1,-1,-1,},
{ 0, 0, 0, 0, 0,-1, 0, 0, 0, 0, 0, 0,-1,},
{ 0, 0, 0, 0, 0,-1,-1,-1,-1,-1,-1,-1,-1,},
};
int level_10[16][19]={
{ 0,-1,-1,-1, 0, 0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,},
{-1,-1, 1,-1,-1,-1,-1, 0, 0, 0, 0, 0, 0, 0,-1, 0, 0, 0,-1,},
{-1, 0, 2, 2, 0, 0, 0, 2, 2, 0, 0, 2, 0, 2, 0, 3, 3, 3,-1,},
{-1, 0, 0, 2, 2, 2,-1, 0, 0, 0, 0, 2, 0, 0,-1, 3, 3, 3,-1,},
{-1, 0, 2, 0, 0, 0,-1, 0, 2, 2, 0, 2, 2, 0,-1, 3, 3, 3,-1,},
{-1,-1,-1, 0, 0, 0,-1, 0, 0, 2, 0, 0, 0, 0,-1, 3, 3, 3,-1,},
{-1, 0, 0, 0, 0, 0,-1, 0, 2, 0, 2, 0, 2, 0,-1, 3, 3, 3,-1,},
{-1, 0, 0, 0, 0,-1,-1,-1,-1,-1,-1, 0,-1,-1,-1, 3, 3, 3,-1,},
{-1,-1, 0,-1, 0, 0,-1, 0, 0, 2, 0, 2, 0, 0,-1, 3, 3, 3,-1,},
{-1, 0, 0,-1,-1, 0,-1, 0, 2, 2, 0, 2, 0, 2,-1,-1, 3, 3,-1,},
{-1, 0, 3, 3,-1, 0,-1, 0, 0, 2, 0, 0, 0, 0, 0, 0,-1, 3,-1,},
{-1, 0, 3, 3,-1, 0,-1, 0, 2, 2, 2, 0, 2, 2, 2, 0,-1, 3,-1,},
{-1,-1,-1,-1,-1, 0,-1, 0, 0, 0, 0, 0, 0, 0,-1, 0,-1, 3,-1,},
{ 0, 0, 0, 0,-1, 0,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0,-1, 3,-1,},
{ 0, 0, 0, 0,-1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-1, 3,-1,},
{ 0, 0, 0, 0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,},
};
for(;;){
printf_menu();
op_menu=scanf_number();
switch(op_menu){
	case 2:
		printf_cap();
		break;
	case 1:
	printf("choose level[1-10]:");
	op_menu_2=scanf_number();
	for(;op_menu_2<1 || op_menu_2>10;){
		printf("please choose rihgt level![1-10]:");
		op_menu_2=scanf_number();
		}
for(start_level=1;start_level==1;){
	switch(op_menu_2){
	case 1:
box_level.level=&level_1[0][0];
box_level.row=11;
box_level.col=19;
box_level.num=6;
break;

	case 2:
box_level.level=&level_2[0][0];
box_level.row=10;
box_level.col=14;
box_level.num=10;
break;

	case 3:
box_level.level=&level_3[0][0];
box_level.row=10;
box_level.col=17;
box_level.num=11;
break;

	case 4:
box_level.level=&level_4[0][0];
box_level.row=14;
box_level.col=19;
box_level.num=20;
break;

	case 5:
box_level.level=&level_5[0][0];
box_level.row=13;
box_level.col=17;
box_level.num=12;
break;

	case 6:
box_level.level=&level_6[0][0];
box_level.row=11;
box_level.col=12;
box_level.num=10;
break;

	case 7:
box_level.level=&level_7[0][0];
box_level.row=12;
box_level.col=13;
box_level.num=11;
break;

	case 8:
box_level.level=&level_8[0][0];
box_level.row=16;
box_level.col=16;
box_level.num=18;
break;

	case 9:
box_level.level=&level_9[0][0];
box_level.row=14;
box_level.col=17;
box_level.num=14;
break;

	case 10:
box_level.level=&level_10[0][0];
box_level.row=16;
box_level.col=19;
box_level.num=32;
break;

	default:
break;
	}//the end of switch(op_menu_2)
int level_999[box_level.row][box_level.col];
int i,j; 
for(i=0;i<box_level.row;i++){
	for(j=0;j<box_level.col;j++){
		level_999[i][j]=*(box_level.level+i*box_level.col+j);
		}
	}//copy the level_* to level_999
box_level.level=&level_999[0][0];
level_tmp=&box_level;
printf_map(level_tmp,op_menu_2,0);
for(level_over=0;perfect_box<level_tmp->num && level_over!=-1;){
	option=scanf_dire();
#if ONE_STEP
	char ch;
	while((ch = getchar()) != 10 && ch != EOF);//move one step at a time
#endif
	switch(option){
		case 1:
		case 2:
		case 3:
		case 4:
			if(p_move(level_tmp,option)){
				level_over++;
				}
			break;
		case 5:
		case 6:
		case 7:
		case 8:
			if(p_move_oppo(level_tmp,option)){
				level_over++;
				}
			break;
		case -1:
			printf("---------------------------------------\n");
			printf("Do you want to return to main menu?[y/n]\n");
			getchar();
			if(getchar()=='y'){
				start_level=-2;
				level_over=-1;
				}
			break;
		case -2:
			printf("---------------------------------------\n");
			printf("Do you want to restart this level?[y/n]\n");
			getchar();
			if(getchar()=='y'){
				level_over=-1;
				}
			break;
		case -3:
			if(op_menu_2<10){
			printf("---------------------------------------\n");
			printf("Do you want to start next level?[y/n]\n");
			getchar();
			if(getchar()=='y'){
				op_menu_2++;
				level_over=-1;
				}
			}
			else{
			printf("---------------------------------------\n");
			printf("This is the last level!\n");
			printf("press any key to continue!\n");
			getchar();
			getchar();
			}
			break;
		default:
			break;
		}
	if(level_over!=-1){
		printf_map(level_tmp,op_menu_2,level_over);
		}
	}
	if(perfect_box==level_tmp->num && op_menu_2<=10){
		if(op_menu_2==10){
			printf("You win!congratulation!!!\n");
			start_level=-1;
			}
		else{
			printf("---------------------------------------\n");
			printf("Do you want to start next level?[y/n]\n");
			getchar();
			if(getchar()=='y'){
				op_menu_2++;
				}
			else{
				start_level=-1;
				}
			}
		}
	}//the end of for(;start_level;)

	break; //the end of switch(op_menu) -> case 1
	case 99:
	printf("EXIT GAME!\n");
	return 0;//the only way to exit the game
	break;

	default:
	break;
	}//the end of switch(op_menu)
	}//the end of for(;;)
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值