Пример #1
0
int main(void)
{
	TRISA = 0xFC; /* A 0,1:output, 2,3,4:input */
	TRISB = 0xC7; /* B0,1,2:input, B3,4,5:LEDoutput, other bits input */
	PORTB = 0;    /* PORTB clear */
	PORTA = 0;    /* PORTA clear */
	last_time=STRAIGHT;
	while(RA4==1){
		led_sens();
	}
	while(1){/* 無限ループ */
		led_sens();
		if(RB0==1 && RB1==1 && RB2==1 && last_time==LEFT_DOWN){
			left_down();  /*"White White White" and "LEFT_DOWN last time"*/
			last_time=LEFT_DOWN;	     /* turn left */
		}
		else if(RB0==1 && RB1==1 && RB2==1 && last_time==RIGHT_DOWN){
			right_down(); /*"White White White" and "RIGHT_DOWN last time"*/
			last_time=RIGHT_DOWN;	     /* turn right */
		}
		else if(RB0==0 && RB1==0 && RB2==1){ /* Black Black White */
			small_left_down();           /* turn left a little */
			last_time=LEFT_DOWN;
		}
		else if(RB0==0 && RB1==1 && RB2==1){ /* Black White White */
			left_down();                 /* turn left */
			last_time=LEFT_DOWN;
		}
		else if(RB0==1 && RB1==0 && RB2==0){ /* White Black Black */
			small_right_down();          /* turn right a little */
			last_time=RIGHT_DOWN;
		}
		else if(RB0==1 && RB1==1 && RB2==0){ /* White White Black */
			right_down();                /* turn right */
			last_time=RIGHT_DOWN;
		}
		else{                                /* The other case */
			straight();                  /* go to straight */
			last_time=STRAIGHT;
}	}	}
static void interpret_message(broadcast_message_t *message)
{
    if (message->type == MOVE) {
        move_mouse(&message->delta_point.from_point, &message->delta_point.to_point);
    }
    else if (message->type == LEFT_DOWN_CLICK) {
        left_down();
    }
    else if (message->type == RIGHT_DOWN_CLICK) {
        right_down();
    }
    else if (message->type == LEFT_UP_CLICK) {
        left_up();
    }
    else if (message->type == RIGHT_UP_CLICK) {
        right_up();
    }
}
Пример #3
0
//judge computer chess a pos score and save to player win table
void get_computer_win_table_max(void)
{
	char *msg = "black win!";

	reset(computer_win_table);

	for(i = 0; i < NUM; i++)
	{
		for(j = 0; j < NUM; j++)
		{
			if(pos_flag[j][i] == 0)
			{
				left(i, j, 2, 1, msg, F);
				right(i, j, 2, 1, msg, F);
				up(i, j, 2, 1, msg, F);
				down(i, j, 2, 1, msg, F);
				left_up(i, j, 2, 1, msg, F);
				right_up(i, j, 2, 1, msg, F);
				left_down(i, j, 2, 1, msg, F);
				right_down(i, j, 2, 1, msg, F);
			}
			computer_win_table[j][i] = left_score + right_score + up_score + down_score + 
				left_up_score + right_up_score + left_down_score + right_down_score;
		}
	}
	computer_max = computer_win_table[0][0];
	for(i = 0; i < NUM; i++)
	{
		for(j = 0; j < NUM; j++)
		{
			if(computer_max < computer_win_table[j][i])
			{
				computer_max_x = j;
				computer_max_y = i;
				computer_max = computer_win_table[j][i];
			}
		}
	}
	return;
}
Пример #4
0
//judge player chess a pos score and save to player win table
void get_player_win_table_max(void)
{
	char *msg = "white win!";

	reset(player_win_table);	

	for(i = 0; i < NUM; i++)
	{
		for(j = 0; j < NUM; j++)
		{
			if(pos_flag[j][i] == 0)
			{
				left(i, j, 1, 2, msg, L);
				right(i, j, 1, 2, msg, L);
				up(i, j, 1, 2, msg, L);
				down(i, j, 1, 2, msg, L);
				left_up(i, j, 1, 2, msg, L);
				right_up(i, j, 1, 2, msg, L);
				left_down(i, j, 1, 2, msg, L);
				right_down(i, j, 1, 2, msg, L);
			}
			player_win_table[j][i] = left_score + right_score + up_score + down_score + 
				left_up_score + right_up_score + left_down_score + right_down_score;
		}
	}
	player_max = player_win_table[0][0];
	for(i = 0; i < NUM; i++)
	{
		for(j = 0; j < NUM; j++)
		{
			if(player_max < player_win_table[j][i])
			{
				player_max_x = j;
				player_max_y = i;
				player_max = player_win_table[j][i];
			}
		}
	}
	return;
}
Пример #5
0
void defineGameMap()
{
   VALUE cCollisionType = defClass<CollisionType>("CollisionType");
   defMethod(cCollisionType, "initialize", CollisionType_initialize, -1);

   defMethod(cCollisionType, "left", CollisionType_left, 0);
   defMethod(cCollisionType, "right", CollisionType_right, 0);
   defMethod(cCollisionType, "up", CollisionType_up, 0);
   defMethod(cCollisionType, "down", CollisionType_down, 0);
   defMethod(cCollisionType, "content", CollisionType_content, 0);

   defMethod(cCollisionType, "left=", CollisionType_setLeft, 1);
   defMethod(cCollisionType, "right=", CollisionType_setRight, 1);
   defMethod(cCollisionType, "up=", CollisionType_setUp, 1);
   defMethod(cCollisionType, "down=", CollisionType_setDown, 1);
   defMethod(cCollisionType, "content=", CollisionType_setContent, 1);
   
   VALUE cTile = defClass<GameMap::Tile>("Tile");
   defMethod(cTile, "initialize", GameMap_Tile_initialize, -1);

   defMethod(cTile, "x", Tile_x, 0);
   defMethod(cTile, "y", Tile_y, 0);
   defMethod(cTile, "tileset", Tile_tileset, 0);
   defMethod(cTile, "tileX", Tile_tileX, 0);
   defMethod(cTile, "tileY", Tile_tileY, 0);
   defMethod(cTile, "type", Tile_type, 0);

   defMethod(cTile, "x=", Tile_setX, 1);
   defMethod(cTile, "y=", Tile_setY, 1);
   defMethod(cTile, "tileset=", Tile_setTileset, 1);
   defMethod(cTile, "tileX=", Tile_setTileX, 1);
   defMethod(cTile, "tileY=", Tile_setTileY, 1);
   defMethod(cTile, "type=", Tile_setType, 1);
 
   VALUE cMap = defClass<GameMap>("GameMap", "Drawable");
   defMethod(cMap, "initialize", GameMap_initialize, -1);

   defMethod(cMap, "addTileset", GameMap_addTileset, 1);
   defMethod(cMap, "setTileSize", GameMap_setTileSize, 2);
   defMethod(cMap, "tileWidth", GameMap_tileWidth, 0);
   defMethod(cMap, "tileHeight", GameMap_tileHeight, 0);
   defMethod(cMap, "collisionH=", GameMap_setCollisionH, 1);
   defMethod(cMap, "collisionH", GameMap_collisionH, 0);
   defMethod(cMap, "absToRel", GameMap_absToRel, 2);
   defMethod(cMap, "relToAbs", GameMap_relToAbs, 2);
   defMethod(cMap, "centerOn", GameMap_centerOn, 2);
   defMethod(cMap, "addElem", GameMap_addElem, -1);
   defMethod(cMap, "<<", GameMap_push, 1);
   defMethod(cMap, "clear", GameMap_clear, 0);
   defMethod(cMap, "clearTiles", GameMap_clearTiles, 0);
   defMethod(cMap, "clear_between", GameMap_clearBetween, 0);
   defMethod(cMap, "tiles", GameMap_tiles, 0);
   defMethod(cMap, "tilesets", GameMap_tilesets, 0);
   defMethod(cMap, "each_tile", GameMap_each_tile, 0);
   defMethod(cMap, "each_tileset", GameMap_each_tileset, 0);
   defMethod(cMap, "reject_tiles", GameMap_reject_tiles, 0);
   defMethod(cMap, "addBetween", GameMap_addBetween, 1);

   defAlias(cMap, "addTileset", "add_tileset");
   defAlias(cMap, "setTileSize", "set_tile_size");
   defAlias(cMap, "tileWidth", "tile_width");
   defAlias(cMap, "tileHeight", "tile_height");
   defAlias(cMap, "collisionH", "collision_h");
   defAlias(cMap, "collisionH=", "collision_h=");
   defAlias(cMap, "absToRel", "abs2rel");
   defAlias(cMap, "relToAbs", "rel2abs");
   defAlias(cMap, "centerOn", "center_on");
   defAlias(cMap, "addElem", "add_elem");
   defAlias(cMap, "clearTiles", "clear_tiles");

   CollisionType full(true, false, false, false, false);
   CollisionType left(false, true, false, false, false);
   CollisionType right(false, false, true, false, false);
   CollisionType up(false, false, false, true, false);
   CollisionType down(false, false, false, false, true);
   CollisionType no(false, false, false, false, false);
   CollisionType left_right(false, true, true, false, false);
   CollisionType left_up(false, true, false, true, false);
   CollisionType left_down(false, true, false, false, true);
   CollisionType right_up(false, false, true, true, false);
   CollisionType right_down(false, false, true, false, true);
   CollisionType up_down(false, false, false, true, true);

   /*
     Document-const: COL_FULL
     Joyau::CollisionType.new(true, false, false, false, false): Collision with
     everything.
   */

   /*
     Document-const: COL_LEFT
     Joyau::CollisionType.new(false, true, false, false, false): Collision with
     the left side.
   */

   /*
     Document-const: COL_RIGHT
     Joyau::CollisionType.new(false, false, true, false, false): Collision with
     the right side.
   */

   /*
     Document-const: COL_UP
     Joyau::CollisionType.new(false, false, false, true, false): Collision with
     the upper side.
   */

   /*
     Document-const: COL_DOWN
     Joyau::CollisionType.new(false, false, false, false, true): Collision with
     the downer side.
   */

   /*
     Document-const: COL_NO
     Joyau::CollisionType.new(false, false, false, false, false): Collision 
     with nothing.
   */

   /*
     Document-const: COL_LEFT_RIGHT
     Joyau::CollisionType.new(false, true, true, false, false): Collision with
     the left and right sides.
   */

   /*
     Document-const: COL_LEFT_UP
     Joyau::CollisionType.new(false, true, false, true, false): Collision with
     the left and the upper sides.
   */

   /*
     Document-const: COL_LEFT_DOWN
     Joyau::CollisionType.new(false, true, false, false, true): Collision with
     the left and the downer sides.
   */

   /*
     Document-const: COL_RIGHT_UP
     Joyau::CollisionType.new(false, false, true, true, false): Collision with
     the right and the upper sides.
   */

   /*
     Document-const: COL_RIGHT_DOWN
     Joyau::CollisionType.new(false, false, true, false, true): Collision with
     the right and the downer sides.
   */

   /*
     Document-const: COL_UP_DOWN
     Joyau::CollisionType.new(false, false, false, true, true): Collision with
     the upper and the downer sides.
   */


   defConst(cMap, "COL_FULL", createObject(cCollisionType, full));
   defConst(cMap, "COL_LEFT", createObject(cCollisionType, left));
   defConst(cMap, "COL_RIGHT", createObject(cCollisionType, right));
   defConst(cMap, "COL_UP", createObject(cCollisionType, up));
   defConst(cMap, "COL_DOWN", createObject(cCollisionType, down));
   defConst(cMap, "COL_NO", createObject(cCollisionType, no));
   defConst(cMap, "COL_LEFT_RIGHT", createObject(cCollisionType, left_right));
   defConst(cMap, "COL_LEFT_UP", createObject(cCollisionType, left_up));
   defConst(cMap, "COL_LEFT_DOWN", createObject(cCollisionType, left_down));
   defConst(cMap, "COL_RIGHT_UP", createObject(cCollisionType, right_up));
   defConst(cMap, "COL_RIGHT_DOWN", createObject(cCollisionType, right_down));
   defConst(cMap, "COL_UP_DOWN", createObject(cCollisionType, up_down));
}