骰子游戏


在掷骰子游戏中,会根据所掷数字在地图中前进几步,前进完成后需要根据当前地图位置所示的障碍进行相应操作,其中障碍表示:
1)  9:无障碍
2)  1:停掷一轮,即下轮所掷数字无效;
3)  2:后退两步,如果已经到起点不再后退;
4)  3:奖励前进一步
如果在游戏过程中,已经走到地图终点,则游戏结束。根据输入的地图数组,和5个骰子数的数组,返回最终玩家前进了多少步。
要求实现函数:
void dice(int map_len,int* map, int* dice_val, int* output)
【输入】  int map_len,地图数组的长度
          int* map,地图数组,值表示障碍
int* dice_val,5个骰子数的数组
【输出】  int *output,玩家共前进了多少步
【返回】  无
注:玩家是从起始位置开始,即地图数组的第一位,骰子数只能是1~6
示例
1) 输入:map_len = 15, map ={9,1,9,9,9,2,9,9,9,9,9,9,9,9,9},dice_val = {1,2,1,3,1},
返回:4
2) 输入:map_len = 16, map ={9,9,9,9,9,1,9,3,9,9,2,9,9,9,9,9},dice_val = {2,1,4,1,6},
返回:15
#include 
#include 
void dice(int map_len, int* map, int* dice_val, int* output)
{
	int start=0;
	int i;
	int flag=0;
	for(i=0;i<5;i++)
	{
		while((map[start]==2||map[start]==3)&&start!=(map_len-1))
		{
			if(map[start]==2)
				start-=2;
	                if(start<0)
                                start=0;
			if(map[start]==3)
				start+=1;
		}
		if(start==(map_len-1))
			break;
		switch(map[start])
		{
			case 9:
				start+=dice_val[i];
				break;
			case 1:
				if(flag==0)
				{
					flag=1;
					break;
				}
				else
				{
					start+=dice_val[i];
					flag=0;
					break;
				}	
			default:
			    printf("error");
				exit(1);
				break;
		}
		if(start==(map_len-1))
			break;
	}
	*output=start;
	
}

int main()
{
	int map_len =15;
	int map[] ={9,1,9,9,9,2,9,9,9,9,9,9,9,9,9};
	int dice_val[] = {1,2,1,3,1};
	int output;
	dice(map_len,map,dice_val,&output);
	printf("%d",output);
}



你可能感兴趣的:(c/c++)