예제 #1
0
    void Awake()
    {
        PopUpController.init();
        popUpTextCanvas = GameObject.Find("popUpTextCanvas");
        myCamera        = Camera.main.GetComponent <CameraController>();
        blockColor      = Camera.main.GetComponent <BlockColor>();
        score           = Camera.main.GetComponent <Score>();
        Mesh   mesh   = block.GetComponent <MeshFilter>().sharedMesh;
        Bounds bounds = mesh.bounds;

        blockSide  = bounds.size.x;
        blockSideY = bounds.size.y * block.transform.localScale.y;

        mesh       = player.GetComponent <MeshFilter>().mesh;
        bounds     = mesh.bounds;
        playerSide = bounds.size.x * player.GetComponent <Transform>().localScale.x;

        mesh        = pointUp.GetComponent <MeshFilter>().sharedMesh;
        bounds      = mesh.bounds;
        pointUpSide = bounds.size.x;

        mesh             = blockCover.GetComponent <MeshFilter>().sharedMesh;
        bounds           = mesh.bounds;
        coverLength      = bounds.size.x;
        playerJumpHeight = player.jumpHeight;


        mesh   = newBlock.GetComponent <MeshFilter>().sharedMesh;
        bounds = mesh.bounds;
        float side  = bounds.size.x;
        float scale = blockSide / side;

        print("scale " + scale);
    }
예제 #2
0
        public override string ToString()
        {
            StringBuilder builder = new StringBuilder(rowCount * (columnCount + 1));

            for (int i = 0; i < rowCount; i++)
            {
                builder.Append(i).Append(" ");
                for (int j = 0; j < columnCount; j++)
                {
                    BlockColor blockColor  = blocks[i, j].color;
                    string     firstLetter = blockColor.ToString().Substring(0, 1);
                    builder.Append(firstLetter);
                }
                builder.AppendLine();
            }
            builder.AppendLine();
            builder.Append("  ");
            for (int i = 0; i < columnCount; i++)
            {
                builder.Append(i);
            }
            builder.AppendLine();

            return(builder.ToString());
        }
예제 #3
0
    void CreateRandomColorOfBlock(int newX, int newY, string newSpecial = "None")  //Decide a random block then call CreateBlock()
    {
        BlockColor random = RandomBlockColor();

        switch (random)
        {
        case BlockColor.Red:
            CreateBlock(redBlockPrefab, newX, newY);
            break;

        case BlockColor.Yellow:
            CreateBlock(yellowBlockPrefab, newX, newY);
            break;

        case BlockColor.Green:
            CreateBlock(greenBlockPrefab, newX, newY);
            break;

        case BlockColor.Blue:
            CreateBlock(blueBlockPrefab, newX, newY);
            break;

        case BlockColor.Purple:
            CreateBlock(purpleBlockPrefab, newX, newY);
            break;

        case BlockColor.Pink:
            CreateBlock(pinkBlockPrefab, newX, newY);
            break;
        }
    }
예제 #4
0
 private void PutBlock(BlockColor color, Point[] sqs)
 {
     foreach (var sq in sqs)
     {
         Field[sq.Y, sq.X] = color;
     }
 }
예제 #5
0
 public Screen(int height = 20, int width = 10) // デフォルト引数は公式のテトリスに則った数値。
 {
     Height = height;
     Width  = width;
     Field  = new BlockColor[height, width];
     PutStartPos();
 }
예제 #6
0
 public Block(BlockColor color, Game myGame) :
     base(myGame)
 {
     if (color == BlockColor.Red)
     {
         textureName = "block_red";
     }
     if (color == BlockColor.Yellow)
     {
         textureName = "block_yellow";
     }
     if (color == BlockColor.Blue)
     {
         textureName = "block_blue";
     }
     if (color == BlockColor.Green)
     {
         textureName = "block_green";
     }
     if (color == BlockColor.Purple)
     {
         textureName = "block_purple";
     }
     if (color == BlockColor.GreyHi)
     {
         textureName = "block_grey_hi";
     }
     if (color == BlockColor.Grey)
     {
         textureName = "block_grey";
     }
 }
예제 #7
0
        protected void LoadLevel(string levelName)
        {
            using (FileStream fs = File.OpenRead("Levels/" + levelName))
            {
                XmlSerializer serializer = new XmlSerializer(typeof(Level));
                level = (Level)serializer.Deserialize(fs);
            }

            // TODO: Generate blocks based on level.layout array
            for (int row = 0; row < level.layout.Length; row++)
            {
                for (int col = 0; col < level.layout[row].Length; col++)
                {
                    BlockColor newColor = (BlockColor)level.layout[row][col];
                    if (level.layout[row][col] == 9)
                    {
                        continue;
                    }
                    Block tempBlock = new Block(newColor, this);
                    tempBlock.LoadContent();
                    tempBlock.position = new Vector2(64 + col * 64, 100 + row * 32);
                    blocks.Add(tempBlock);
                }
            }
            speedMult       = levelNum--;                                                  // Ball speed multiplier
            level.nextLevel = "Level" + (levelNum > 5 ? levelNum % 5 : levelNum) + ".xml"; // if levelNum > 5 then return levelNum mod 5 else return levelnum
        }
예제 #8
0
    public BlockColor[] GetPermittedColors(BlockColor currentColor)
    {
        switch (currentColor)
        {
        case BlockColor.RED:
            return(redAllowedBeside);

        case BlockColor.BLUE:
            return(blueAllowedBeside);

        case BlockColor.YELLOW:
            return(yellowAllowedBeside);

        case BlockColor.GREEN:
            return(greenAllowedBeside);

        case BlockColor.PURPLE:
            return(purpleAllowedBeside);

        case BlockColor.ORANGE:
            return(orangeAllowedBeside);

        case BlockColor.GREY:
            return(greyAllowedBeside);

        case BlockColor.RAINBOW:
            return(rainbowAllowedBeside);

        default:
            return(null);
        }
    }
예제 #9
0
    } //  einde methode

    public override void Activate() // de abstracte die we bij activatable hebben gemaakt wordt hier nu aangemaakt
    {
        if (!IsActivated)              // is niet geactiveerd --> is dus nog niet gebruikt, de lever moet nog gebruikt worden
        {
            area = new List <Block>(); // aanmaken van een list van blocks -- hierin staan alle blokjes van u 1 kleur van waar je opstaat

            //    |  hieronder geeft een 2D array van blocks terug        |
            BlockColor color = GameController.CurrentLevel.GetPartOfGrid(Position, 1, 1)[0, 0].Color; // dit geeft de kleur van u blokje weer waar u lever op staat
            // (1,1) [0,0] er kan dus maar 1 ding in en we zetten 0,0 en daar nemen we de kleur van


            // je start op het blokje waar de lever op staat, en je moet alle blokjes van u kleur waar je opstaat (en waar de lever is) in u list krijgen
            ScanForAdjacentBlocks(GameController.CurrentLevel.GetPartOfGrid(Position, 1, 1)[0, 0], color);

            //nu zouden alle blockjes in de list moeten zitten


            foreach (Block block in area)                                    // voor elke blok in de list area (waar alle blokjes in gezet worden die dezelfde kleur hebben) wordt het volgende uitgevoerd:
            {
                block.Color = ColorSpectrum.GetComplementColor(block.Color); // de kleur van de block(jes) wordt omgezet naar hun complementaire kleur
            }

            IsActivated = true; // en op die manier zijn ze dan dus ook geactiveerd.
        }
    }
예제 #10
0
        protected void LoadLevel(string levelName)
        {
            using (FileStream fs = File.OpenRead("Levels/" + levelName))
            {
                XmlSerializer serializer = new XmlSerializer(typeof(Level));
                level = (Level)serializer.Deserialize(fs);
            }

            for (int i = 0; i < level.layout.Length; i++)
            {
                for (int j = 0; j < level.layout[i].Length; j++)
                {
                    if (level.layout[i][j] == 9)
                    {
                    }
                    else
                    {
                        BlockColor color     = (BlockColor)level.layout[i][j];
                        Block      tempBlock = new Block(color, this);
                        tempBlock.LoadContent();
                        tempBlock.position = new Vector2(64 + j * 64, 100 + i * 32);
                        blocks.Add(tempBlock);
                    }
                }
                ;
            }
            ;
        }
예제 #11
0
    public override List <Block> GetChain(BlockColor color)
    {
        toCheck = false;
        List <Block> ResultList = new List <Block>();

        return(ResultList);
    }
예제 #12
0
 // Use this for initialization
 void Start()
 {
     Instance         = this;
     foundationObject = GameObject.Find("Foundation");
     blockOffset      = (Vector3.one * 0.5f) / 4;
     selectedColor    = BlockColor.White;
 }
예제 #13
0
        public Block(BlockColor color, Game myGame) : base(myGame)
        {
            this.color = color;
            switch (color)
            {
            case BlockColor.Red:
                textureName = "block_red";
                break;

            case BlockColor.Yellow:
                textureName = "block_yellow";
                break;

            case BlockColor.Blue:
                textureName = "block_blue";
                break;

            case BlockColor.Green:
                textureName = "block_green";
                break;

            case BlockColor.Purple:
                textureName = "block_purple";
                break;

            case BlockColor.GreyHi:
                textureName = "block_grey_hi";
                break;

            case BlockColor.Grey:
                textureName = "block_grey";
                break;
            }
            ;
        }
예제 #14
0
        public Block(int xPosition, int yPosition, BlockColor blockColor)
        {
            this.x = xPosition;
            this.y = yPosition;

            this.color = blockColor;
        }
예제 #15
0
	public void Recolor(BlockColor c)
	{
		color = c;
		
		foreach (MapBlock b in blocks)
			b.Recolor();
	}
예제 #16
0
        public Block(BlockColor myColor, Game myGame) :
            base(myGame)
        {
            color = myColor;
            switch (color)
            {
            case (BlockColor.Red):
                textureName = "block_red";
                break;

            case (BlockColor.Yellow):
                textureName = "block_yellow";
                break;

            case (BlockColor.Blue):
                textureName = "block_blue";
                break;

            case (BlockColor.Green):
                textureName = "block_green";
                break;

            case (BlockColor.Purple):
                textureName = "block_purple";
                break;

            case (BlockColor.GreyHi):
                textureName = "block_grey_hi";
                break;

            case (BlockColor.Grey):
                textureName = "block_grey";
                break;
            }
        }
예제 #17
0
    public void SetColor(BlockColor color)
    {
        this.image = GetComponent <Image>();
        this.Color = color;

        var    spriteList = Resources.LoadAll <Sprite>("Sprites/spritesheet");
        Sprite sprite     = null;

        switch (color)
        {
        case BlockColor.RED:
            sprite = spriteList[5];
            break;

        case BlockColor.GREEN:
            sprite = spriteList[8];
            break;

        case BlockColor.BLUE:
            sprite = spriteList[0];
            break;
        }

        this.image.sprite = sprite;

        // TODO: Insert sprite banana
    }
예제 #18
0
        /// <summary>
        /// Takes data from CurrentPiece.Piece (a 2-D List of char, which represents piece orientation),
        /// and copies it to the Board, centered around the coordinated defined by "pieceCenter"
        /// </summary>
        /// <param name="fuzaChar">The character to write to the Board</param>
        public void DrawPiece(FuzaPiece currentPiece, Coordinate pieceCenter)
        {
            const int  CENTER = FuzaPiece.PIECE_SIZE / 2;
            BlockColor color  = currentPiece.Piece[CENTER][CENTER].Color;

            for (int row = 0; row < FuzaPiece.PIECE_SIZE; row++)
            {
                for (int col = 0; col < FuzaPiece.PIECE_SIZE; col++)
                {
                    GridSpace block = new GridSpace(currentPiece.Piece[row][col]);

                    // Find piece position in the playfield
                    int colCoord = pieceCenter.xPos - (CENTER) + col;
                    int rowCoord = pieceCenter.yPos - (CENTER) + row;

                    // Update playfield
                    if (colCoord >= 0 && colCoord < BOARD_WIDTH &&
                        rowCoord >= 0 && rowCoord < BOARD_HEIGHT)
                    {
                        if (block.Color != BlockColor.Background)
                        {
                            Board[rowCoord][colCoord] = block;
                        }
                        // Overwrite any potential ghost trails
                        else if (block.Color == BlockColor.Background && !Board[rowCoord][colCoord].IsLockedDownBlock)
                        {
                            Board[rowCoord][colCoord] = block;
                        }
                    }
                }
            }
        }
예제 #19
0
    private BlockView GetBlockViewByBlockColor(BlockColor blockColor)
    {
        switch (blockColor)
        {
        case BlockColor.Red:
            return(RedBlock);

        case BlockColor.Blue:
            return(BlueBlock);

        case BlockColor.Green:
            return(GreenBlock);

        case BlockColor.LightBlue:
            return(LightBlueBlock);

        case BlockColor.Orange:
            return(OrangeBlock);

        case BlockColor.Purple:
            return(PurpleBlock);

        case BlockColor.Yellow:
            return(YellowBlock);
        }
        return(null);
    }
예제 #20
0
    public Color getColor(BlockColor blockColor)
    {
        switch (blockColor)
        {
        case BlockColor.RED:
            return(redColor);

        case BlockColor.BLUE:
            return(blueColor);

        case BlockColor.YELLOW:
            return(yellowColor);

        case BlockColor.GREEN:
            return(greenColor);

        case BlockColor.PURPLE:
            return(purpleColor);

        case BlockColor.ORANGE:
            return(orangeColor);

        case BlockColor.GREY:
            return(greyColor);

        default:
            return(Color.white);
        }
    }
예제 #21
0
    public void SwapColors()
    {
        int             index         = 0;
        BlockController previousBlock = null;

        foreach (Transform child in transform)
        {
            BlockController block = child.GetComponent <BlockController>();
            if (block != null)
            {
                if (index == 0)
                {
                    previousBlock = block;
                }
                else
                {
                    BlockColor color = block.blockColor;
                    block.UpdateColor(previousBlock.blockColor);
                    previousBlock.UpdateColor(color);
                    previousBlock = block;
                }
                index++;
            }
        }
    }
예제 #22
0
 /// <summary>
 /// Starts the Game
 /// </summary>
 private void Start()
 {
     InstanceGameManager = this;
     mFoundationObject   = GameObject.Find("Foundation");
     mBlockOffset        = Vector3.one * (0.5f / 4);
     SelectedColor       = BlockColor.White;
 }
예제 #23
0
파일: Game.cs 프로젝트: Klim0o0/Tetris
        public BlockColor[,] GetBlocks()
        {
            var t = new BlockColor[Width, Height];

            for (var i = 0; i < Width; i++)
            {
                for (var j = 0; j < Height; j++)
                {
                    t[i, j] = stateBlocks[i, j];
                }
            }

            if (mino == null)
            {
                return(t);
            }

            foreach (var block in mino.Blocks)
            {
                t[block.X, block.Y] = block.Color;
            }


            return(t);
        }
예제 #24
0
        public void TestRemovalMatches_ShouldAlterSomeCells()
        {
            var simpleBoardContentsAfterRemoval = new BlockColor[, ]
            {
                { BlockColor.Red, BlockColor.Empty, BlockColor.Green, BlockColor.Red },
                { BlockColor.Green, BlockColor.Empty, BlockColor.Blue, BlockColor.Green },
                { BlockColor.Blue, BlockColor.Empty, BlockColor.Green, BlockColor.Red },
                { BlockColor.Empty, BlockColor.Empty, BlockColor.Empty, BlockColor.Red }
            };


            var match3Game = new Match3Game(Simple, AllowedTypes);
            List <SpecialBlockActivation> blockActivation = new List <SpecialBlockActivation>();
            List <BlockRemoval>           removedBlocks2  = new List <BlockRemoval>();
            List <BlockAndPosition>       createdBlocks   = new List <BlockAndPosition>();

            match3Game.RemoveMatches(blockActivation, removedBlocks2, createdBlocks);

            for (int row = 0; row < match3Game.RowCount; row++)
            {
                for (int column = 0; column < match3Game.ColumnCount; column++)
                {
                    Assert.That(match3Game[row, column].color == simpleBoardContentsAfterRemoval[row, column]);
                }
            }
        }
예제 #25
0
        public void QueueColor(BlockColor color)
        {
            switch (color)
            {
            case BlockColor.blue:
                blueBlocks.Items.ForEach(block => {
                    QueueBlockToBreak(block);
                });
                break;

            case BlockColor.green:
                greenBlocks.Items.ForEach(block => {
                    QueueBlockToBreak(block);
                });
                break;

            case BlockColor.red:
                redBlocks.Items.ForEach(block => {
                    QueueBlockToBreak(block);
                });
                break;

            case BlockColor.yellow:
                yellowBlocks.Items.ForEach(block => {
                    QueueBlockToBreak(block);
                });
                break;
            }
        }
예제 #26
0
 // Spawn a block with a certain color
 public void Spawn(Vector3 pos, BlockColor color)
 {
     if (color != BlockColor.RED)
     {
         GameObject block = Instantiate(Tetromino[(int)color - 1], pos, Quaternion.identity);
     }
 }
예제 #27
0
 public Block(int startX, int startY, BlockColor color)
 {
     X          = startX;
     Y          = startY;
     this.color = color;
     brush      = brushColor[(int)color];
 }
예제 #28
0
    protected void InitializeColor()
    {
        mColor = (BlockColor)rnd.Next(0, 6);
        switch (mColor)
        {
        case BlockColor.RED:
            spriteRenderer.color = Color.red;
            break;

        case BlockColor.BLUE:
            spriteRenderer.color = Color.blue;
            break;

        case BlockColor.GREEN:
            spriteRenderer.color = Color.green;
            break;

        case BlockColor.YELLOW:
            spriteRenderer.color = Color.yellow;
            break;

        case BlockColor.VIOLET:
            spriteRenderer.color = Color.magenta;
            break;

        case BlockColor.ORANGE:
            spriteRenderer.color = _orange;
            break;
        }
    }
예제 #29
0
 public ClutterBlock(BlockColor color, int width, int height)
 {
     Color  = color;
     Width  = width;
     Height = height;
     Depth  = -5;
 }
예제 #30
0
    private bool CheckColorPair(BlockColor current, BlockColor adjoining)
    {
        switch (current)
        {
        case BlockColor.RED:
            return(redAllowedBeside.Contains(adjoining));

        case BlockColor.BLUE:
            return(blueAllowedBeside.Contains(adjoining));

        case BlockColor.YELLOW:
            return(yellowAllowedBeside.Contains(adjoining));

        case BlockColor.GREEN:
            return(greenAllowedBeside.Contains(adjoining));

        case BlockColor.PURPLE:
            return(purpleAllowedBeside.Contains(adjoining));

        case BlockColor.ORANGE:
            return(orangeAllowedBeside.Contains(adjoining));

        case BlockColor.RAINBOW:
            return(rainbowAllowedBeside.Contains(adjoining));

        default:
            return(false);
        }
    }
예제 #31
0
    } // einde IsInArea

    // aanmaken van scanForAdjacentBlocks  (focusblok = u main blokje waarrond je gaat kijken)
    private void ScanForAdjacentBlocks(Block focusBlock, BlockColor color)
    {
        if (focusBlock.Color == color && // hier gaat hij nakijken of de focusblokje en u kleur hetzelfde zijn. Op een bepaald punt gaat dit niet meer zo zijn als je aan de rand komt
            !IsInArea(focusBlock) // volgende voorwaarde waaraan het moet voldoen (met parameters)
            )
        {                         // begin if
            area.Add(focusBlock); // als hij inderdaad dezelfde kleur heeft dan mag hij in de list


            if (focusBlock.Coordinate.YPosition > 0)
            {
                ScanForAdjacentBlocks(                                                                         // heeft 3 parameters (GameController/focusblock   , color   ,  area)

                    GameController.CurrentLevel.GetPartOfGrid(                                                 // getPartOfGrid geeft een 2D array terug en heeft 2 parameters
                        new Coordinates(focusBlock.Coordinate.XPosition, focusBlock.Coordinate.YPosition - 1), //Linkerboven co-ordinaten
                        1,                                                                                     // breedte van array                              //Ypos - 1 = gaat in u grid 1 naar boven gaan. bv als hij p 12 staat --> 12-1=11
                        1                                                                                      // hoogte van array
                        )[0, 0],                                                                               // dit is de focusblock die linksboven in de array(van 1) staat
                    color
                    );                                                                                         // block er boven
                // wanneer deze is afgelopen en alle bovenstaande blokken zitten in de lijst, gaan we verder naar hieronder
            }
            if (focusBlock.Coordinate.YPosition < GameController.CurrentLevel.Height - 1) //checked of de focusblok niet op de onderste rij zit. je doet de hoogte van het actieve level -1 om de index van de onderste rij te bekomen
            // hier start je verder in de laatste focusblock
            {
                ScanForAdjacentBlocks(                         // heeft 3 parameters (GameController/focusblock   , color   ,  area)
                    GameController.CurrentLevel.GetPartOfGrid( // getPartOfGrid geeft een 2D array terug en heeft 2 parameters
                        new Coordinates(focusBlock.Coordinate.XPosition, focusBlock.Coordinate.YPosition + 1),
                        1,                                     //Ypos + 1 = gaat in u grid 1 naar onder gaan. bv als hij p 12 staat --> 12+1=13
                        1
                        )[0, 0],                               // dit is de focusblock die linksboven in de array(van 1) staat
                    color
                    );                                         // block er onder
            }

            if (focusBlock.Coordinate.XPosition > 0)
            {
                ScanForAdjacentBlocks(                         // heeft 3 parameters (GameController/focusblock   , color   ,  area )
                    GameController.CurrentLevel.GetPartOfGrid( // getPartOfGrid geeft een 2D array terug en heeft 2 parameters
                        new Coordinates(focusBlock.Coordinate.XPosition - 1, focusBlock.Coordinate.YPosition),
                        1,                                     //Xpos - 1 = gaat in u grid 1 naar links gaan. bv als hij p 12 staat --> 12-1=11
                        1
                        )[0, 0],                               // dit is de focusblock die linksboven in de array(van 1) staat
                    color
                    );                                         // block er links van
            }
            if (focusBlock.Coordinate.XPosition < GameController.CurrentLevel.Width - 1)
            {
                ScanForAdjacentBlocks(                         // heeft 3 parameters (GameController/focusblock   , color   ,  area)
                    GameController.CurrentLevel.GetPartOfGrid( // getPartOfGrid geeft een 2D array terug en heeft 2 parameters
                        new Coordinates(focusBlock.Coordinate.XPosition + 1, focusBlock.Coordinate.YPosition),
                        1,                                     //Xpos + 1 = gaat in u grid 1 naar rechts gaan. bv als hij p 12 staat --> 12+1=13
                        1
                        )   [0, 0],                            // dit is de focusblock die linksboven in de array(van 1) staat
                    color
                    );                                         // block er rechts van
            }
        }// einde if
    } //  einde methode
예제 #32
0
파일: Block.cs 프로젝트: bonesoul/frenzied
 public Block(BlockLocation location, BlockColor color)
 {
     this.Location = location;
     this.Color = color;
     this.IsEmpty = false;
 }