示例#1
0
        public bool CanBePlaced(Tile t, Grid g)
        {
            Tile tile = new Tile(t);


            for (int r = 0; r < 4; r++)
            {
                for (int x = -1; x < 10; x++)
                {
                    for (int y = -1; y < 10; y++)
                    {
                        if (g.tryTile(x, y, tile))
                        {
                            return(true);
                        }
                    }
                }
                tile.rotate(1);
            }
            return(false);
        }
示例#2
0
文件: Game.cs 项目: Allott/Patchwork
        public void Buy(Player currentPlayer, String action)
        {
            string[] actionSteps = action.Split(delimiterChars);

            int  tileX = 0;
            int  tileY = 0;
            Tile tileTransformed;
            bool valid  = true;
            int  moving = 0;

            try//get tile location
            {
                if ((Convert.ToInt32(actionSteps[0]) >= 3) || (Convert.ToInt32(actionSteps[0]) < 0))
                {
                    gameError("illegal move, trying to buy outside of range");
                    valid = false;
                }

                //tileLocation = Convert.ToInt32(actionSteps[0]) + neutralToken;
                moving       = Convert.ToInt32(actionSteps[0]);
                tileLocation = move(moving);
            }
            catch (Exception ex)
            {
                gameError(Convert.ToString(ex));
            }

            if (tileList[tileLocation].ReturnCost() > currentPlayer.GetButtons())
            {
                gameError("illegal move, cant pay costs");
                valid = false;
            }

            try//get tile x
            {
                /*
                 * if ((Convert.ToInt32(actionSteps[1]) >= 9) || (Convert.ToInt32(actionSteps[1]) < 0))
                 * {
                 *  gameError("illegal move, trying to place tile X out of range");
                 * }
                 */

                tileY = Convert.ToInt32(actionSteps[1]);
            }
            catch (Exception ex)
            {
                gameError(Convert.ToString(ex));
                valid = false;
            }

            try//get tile y
            {
                /*
                 * if ((Convert.ToInt32(actionSteps[2]) >= 9) || (Convert.ToInt32(actionSteps[2]) < 0))
                 * {
                 *  gameError("illegal move, trying to place tile Y out of range");
                 * }
                 */

                tileX = Convert.ToInt32(actionSteps[2]);
            }
            catch (Exception ex)
            {
                gameError(Convert.ToString(ex));
                valid = false;
            }

            tileTransformed = new Tile(tileList[tileLocation]);

            try
            {
                for (int i = 3; i < actionSteps.Length; i++)
                {
                    switch (actionSteps[i])
                    {
                    case "R1":
                        tileTransformed.rotate(1);
                        //Console.WriteLine("r1");
                        break;

                    case "R2":
                        //Console.WriteLine("r2");
                        tileTransformed.rotate(2);
                        break;

                    case "R3":
                        //Console.WriteLine("r3");
                        tileTransformed.rotate(3);
                        break;

                    case "F":
                        tileTransformed.flip();
                        break;

                    default:
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                gameError(Convert.ToString(ex));
                valid = false;
            }

            if (valid)
            {//check try tile
                valid = currentPlayer.GetGrid().tryTile(tileX, tileY, tileTransformed);


                if (!valid)
                {
                    Console.WriteLine(currentPlayer.GetTime());
                    Console.WriteLine(action + "ahh\r\n" + tileTransformed.returnString() + currentPlayer.GetName());
                    Console.WriteLine(currentPlayer.GetGrid().returnString());
                    Console.ReadLine();
                }
            }

            if (valid)
            {
                currentPlayer.GetGrid().addTile(tileX, tileY, tileTransformed);
                currentPlayer.SetButtons(currentPlayer.GetButtons() - tileTransformed.ReturnCost());

                MovementButtons(currentPlayer.GetTime(), currentPlayer.GetTime() - tileTransformed.ReturnTime(), currentPlayer);// check this
                currentPlayer.SetTime(currentPlayer.GetTime() - tileTransformed.ReturnTime());
                currentPlayer.SetButtonGain(currentPlayer.GetButtonGain() + tileTransformed.ReturnButtons());
                //removeTileFromNeutral(tileLocation);
                //moveToken(tileLocation);
                removeTile(move(moving));
                neutralToken = move(moving);
            }
        }