码迷,mamicode.com
首页 > 其他好文 > 详细

黑白棋子交换

时间:2015-04-03 21:09:33      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:算法   c   游戏   

问题:

         在一个有七个格子的盒子里,左边放着3个白球,第四个是空的,右边三个是黑球

         游戏规则:

         1.一次只能移动一个棋子

         2.棋子可以向空格中移动,也可以跳过一个对方的棋子进入空格。

         3.白色棋子只能向右移动,黑色棋子只能向左移动,不能跳过两个子。

#include <stdio.h>
#include <stdlib.h>
int number;
void print(int a[]);
void change(int *n, int *m);

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
	int t[7] = {1,1,1,0,2,2,2};
	int i, flag;
	print(t);
	//若没有完成棋子的交换,则继续进行循环
	while(t[0]+t[1]+t[2] != 6 || t[4]+t[5]+t[6] != 3)
	{
		flag = 1;//flag为棋子移动一步的标记,flag=1表示棋子尚未移动,否则表示已经移动
		for(i=0; flag&& i<5; i++)
			if(t[i]==1 && t[i+1]== 2 && t[i+2]==0) 
			{
				change(&t[i], &t[i+2]);
				print(t);
				flag = 0;
			}
			for(i=0; flag && i<5; i++)
				if(t[i] == 0 && t[i+1]==1 && t[i+2]==2)
				{
					change(&t[i], &t[i+2]);
					print(t);
					flag=0;
				}
			for(i=0; flag&&i<6; i++)
				if(t[i]==1&&t[i+1]==0&&(i==0 || t[i-1]!= t[i+2]))
				{
					change(&t[i], &t[i+1]);
					print(t);
					flag=0;
				}
			for(i=0; flag&&i<6; i++)
				if(t[i]==0 && t[i+1]==2&&(i==5 || t[i-1] != t[i+2]))
				{
					change(&t[i], &t[i+1]);
					print(t);
					flag=0;
				}
		
	} 
	return 0;
}

void print(int a[])
{
	int i;
	printf("No. %2d:................\n", number++ );
	printf(" ");
	for(i=0; i<=6; i++)
		printf(" | %c",a[i]==1?'*': (a[i]==2?'@':' '));
	printf(" \\n............\n\n");
}

void change(int *n, int * m)
{
	int temp;
	temp = *n;
	*n = *m;
	*m = temp;
}

/*
No.  0:................
  | * | * | * |   | @ | @ | @ \n............

No.  1:................
  | * | * |   | * | @ | @ | @ \n............

No.  2:................
  | * | * | @ | * |   | @ | @ \n............

No.  3:................
  | * | * | @ | * | @ |   | @ \n............

No.  4:................
  | * | * | @ |   | @ | * | @ \n............

No.  5:................
  | * |   | @ | * | @ | * | @ \n............

No.  6:................
  |   | * | @ | * | @ | * | @ \n............

No.  7:................
  | @ | * |   | * | @ | * | @ \n............

No.  8:................
  | @ | * | @ | * |   | * | @ \n............

No.  9:................
  | @ | * | @ | * | @ | * |   \n............

No. 10:................
  | @ | * | @ | * | @ |   | * \n............

No. 11:................
  | @ | * | @ |   | @ | * | * \n............

No. 12:................
  | @ |   | @ | * | @ | * | * \n............

No. 13:................
  | @ | @ |   | * | @ | * | * \n............

No. 14:................
  | @ | @ | @ | * |   | * | * \n............

No. 15:................
  | @ | @ | @ |   | * | * | * \n............
  这道题目重在分析白棋和黑棋走的 规则。 
*/


黑白棋子交换

标签:算法   c   游戏   

原文地址:http://blog.csdn.net/orangeisnotapple/article/details/44859037

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!