// Simple "Chutes and Ladders" game // Version 2 (10/21/09) -- adds Die class class Die { // Variables for the class int x; int y; int value; // Functions (methods) for the class Die (int xCoord, int yCoord) { x = xCoord; y = yCoord; value = 0; } int getValue () { return value; } void roll () { value = int(random(1, 7)); } void display() { // Draw a 56x56 square for the die outline fill(240, 240, 240); rect(x, y, 56, 56); int pipDiameter = 8; fill(0); switch(value) { case 1: ellipse(x+28, y+28, pipDiameter, pipDiameter); break; case 4: ellipse(x+13, y+13, pipDiameter, pipDiameter); ellipse(x+41, y+41, pipDiameter, pipDiameter); case 2: ellipse(x+41, y+13, pipDiameter, pipDiameter); ellipse(x+13, y+41, pipDiameter, pipDiameter); break; case 5: ellipse(x+13, y+13, pipDiameter, pipDiameter); ellipse(x+41, y+41, pipDiameter, pipDiameter); case 3: ellipse(x+41, y+13, pipDiameter, pipDiameter); ellipse(x+13, y+41, pipDiameter, pipDiameter); ellipse(x+28, y+28, pipDiameter, pipDiameter); break; case 6: // Print left side pips ellipse(x+13, y+13, pipDiameter, pipDiameter); ellipse(x+13, y+28, pipDiameter, pipDiameter); ellipse(x+13, y+41, pipDiameter, pipDiameter); // Print right side pips ellipse(x+41, y+13, pipDiameter, pipDiameter); ellipse(x+41, y+28, pipDiameter, pipDiameter); ellipse(x+41, y+41, pipDiameter, pipDiameter); break; } } } // Represents a single space on game board class BoardSquare { int xCoord; int yCoord; int squareWidth; int squareHeight; int rComp, gComp, bComp; // Color parts // Every square has a number; normally, // nextSquare is this square's number plus 1 // (the next space on the board). int nextSquare; // Display the current square void display () { fill(rComp, gComp, bComp); rect(xCoord, yCoord, squareWidth, squareHeight); } // Set starting values // Constructor -- has same name as class, but NO // return type BoardSquare (int next, int x, int y, int r, int g, int b) { nextSquare = next; xCoord = x; yCoord = y; squareWidth = 40; squareHeight = 40; rComp = r; gComp = g; bComp = b; } int getCenterX() { return xCoord + 20; } int getCenterY() { return yCoord + 20; } void setNextSquare (int next) { nextSquare = next; } int getNextSquare () { return nextSquare; } } class Player { int currentSquare; int redValue; int greenValue; int blueValue; // Constructor for Player class Player (int square, int r, int g, int b) { currentSquare = square; redValue = r; greenValue = g; blueValue = b; } // Draw the Player at a given position void drawPlayer() { // Get x and y coordinates for the Player's // current square on the game board int x = gameboard[currentSquare].getCenterX(); int y = gameboard[currentSquare].getCenterY(); // Draw the Player at that position fill(redValue, greenValue, blueValue); ellipse(x, y, 20, 20); } void move () { // Move to the next square int next = gameboard[currentSquare].getNextSquare(); currentSquare = next; } } BoardSquare[] gameboard; Player p = new Player(0, 150, 150, 255); Die dice = new Die(300, 300); /* BoardSquare b1; BoardSquare b2; BoardSquare b3; */ void setup () { size(400, 400); background(10); gameboard = new BoardSquare[10]; gameboard[0] = new BoardSquare(1, 20, 250, 200, 175, 50); gameboard[1] = new BoardSquare(2, 60, 250, 150, 150, 150); gameboard[2] = new BoardSquare(3, 100, 250, 100, 250, 100); gameboard[3] = new BoardSquare(4, 140, 250, 100, 250, 100); gameboard[4] = new BoardSquare(5, 180, 250, 100, 250, 100); gameboard[5] = new BoardSquare(6, 220, 250, 100, 250, 100); gameboard[6] = new BoardSquare(7, 260, 250, 100, 250, 100); gameboard[7] = new BoardSquare(8, 300, 250, 100, 250, 100); gameboard[8] = new BoardSquare(9, 340, 250, 100, 250, 100); gameboard[9] = new BoardSquare(0, 340, 210, 100, 250, 100); } void draw () { background(10); // Show entire game board for (int pos = 0; pos < gameboard.length; pos = pos + 1) { gameboard[pos].display(); } p.drawPlayer(); dice.display(); } void mousePressed() { // p.move(); // Move to the next square if (mouseX >= 300 && mouseX <= 356 && mouseY >= 300 && mouseY <= 356) { dice.roll(); // get a new value int spaces = dice.getValue(); while (spaces > 0) { p.move(); spaces = spaces - 1; } } }