示例#1
0
        public float GetTilePoints(Tile t, Game current)
        {
            float r = 0;

            bool[,] grid = t.returnshape();

            foreach (bool b in grid)
            {
                if (b)
                {
                    r = r + 2;
                }
            }

            r = r + t.ReturnButtons() * current.ButtonsLeft(this.GetTime());//fix this

            r = r - t.ReturnCost();

            r = r / t.ReturnTime();
            return(r);
        }
示例#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);
            }
        }