Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • inf112/23v/inf112.23v.javafx-template
  • java-junkies/inf112.23v.javafx-template
  • Bastian.Sunde/inf112.23v.javafx-template
  • inf112/22v/inf112.22v.javafx-template
  • Erik.Ingebrigtsen/inf112.proggy-gonzales
  • Yilin.Yuan/inf112.22v.javafx-template
  • Sigurd.Dyrstad/inf112.22v.javafx-template
  • Benjamin.Austestad/inf112.22v.javafx-template
  • Jon.Kvinnsland/inf112.22v.javafx-template
  • Hannah.Morken/inf112.22v.javafx-template
  • Chantal.Bakar/inf112.22v.javafx-template
  • Erik.Harto/inf112.22v.javafx-template
  • Alexander.Smith/inf112.22v.javafx-template
  • Marco.Cardenas/inf112.22v.javafx-template
  • Filip.Mathisen/inf112.22v.javafx-template
  • Snorre.Haland/inf112.22v.javafx-template
  • Daniel.Roli/inf112.22v.javafx-template
  • Erik.Holmeide/inf112.22v.javafx-template
  • Arne.Reime/inf112.22v.javafx-template
  • Andre.Kvalvik/inf112.22v.javafx-template
  • Vetle.Hjelmtvedt/inf112.22v.javafx-template
  • Osten.Edvardsen/inf112.22v.javafx-template
  • Vegard.Vasset/inf112.22v.javafx-template
  • Jonatan.Valen/inf112.22v.javafx-template
  • Gard.Kalland/inf112.22v.javafx-template
  • Daniel.Nyvoll/inf112.22v.javafx-template
  • Marius.Aasebo/inf112.22v.javafx-template
  • Irene.Gabrielsen/inf112.22v.javafx-template
28 results
Show changes
Commits on Source (11)
Showing
with 203 additions and 76 deletions
......@@ -146,7 +146,6 @@ public class CollisionCheck {
if (pickUpGeneric(x1, y1, x2, y2, 16)) {
gp.playSoundEffect(4);
gp.gameState = GameState.WIN_SCREEN; //switches to winning screen
gp.stopTimer();
}
}
}
......
......@@ -261,10 +261,13 @@ public class GamePanel extends JPanel implements Runnable{
public void update() {
bg.update();
gO.update();
lS.update();
if(this.keyH.enterPressed) {
menu.update();
}
if(!gO.gameOver()) {
score.showScore();
if(!(gameState == GameState.GAME_OVER)) {
if(!(gameState == GameState.GAME_OVER || gameState == GameState.WIN_SCREEN)) {
player.update();
}
}
......
......@@ -12,6 +12,7 @@ public class KeyHandler implements KeyListener{
public float jumpSpeed;
private GamePanel gp;
String mapPath;
boolean enterPressed = false;
public KeyHandler(GamePanel gp) {
this.gp = gp;
......@@ -42,11 +43,13 @@ public class KeyHandler implements KeyListener{
}
}
if (gp.lS.cmd == 0 && code == KeyEvent.VK_ENTER) {
this.enterPressed = true;
gp.setLang(Languages.ENGLISH);
code = KeyEvent.KEY_RELEASED;
gp.gameState = GameState.START_MENU;
}
if (gp.lS.cmd == 1 && code == KeyEvent.VK_ENTER) {
this.enterPressed = true;
gp.setLang(Languages.NORWEGIAN);
code = KeyEvent.KEY_RELEASED;
gp.gameState = GameState.START_MENU;
......@@ -111,18 +114,18 @@ public class KeyHandler implements KeyListener{
if (code == KeyEvent.VK_ENTER) {
gp.playMusic(7);
if (gp.levels.cmd == 0) {
selectingMapPath("/maps/powerUptestingMap.txt");
selectingMapPath("/maps/easy.txt");
}
if (gp.levels.cmd == 1) {
gp.stopMusic();
gp.playSoundEffect(0);
selectingMapPath("/maps/gameMap.txt");
selectingMapPath("/maps/medium.txt");
gp.playMusic(7);
}
if (gp.levels.cmd == 2) {
selectingMapPath("/maps/testingMap.txt");
selectingMapPath("/maps/hard.txt");
}
}
code = KeyEvent.KEY_RELEASED;
......
......@@ -6,13 +6,12 @@ import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
import core.DisplayText;
import core.GamePanel;
public class LanguageScreen extends GameScreen {
BufferedImage img1, img2;
int x = 0;
public LanguageScreen(GamePanel gp) {
this.gp = gp;
......@@ -24,6 +23,13 @@ public class LanguageScreen extends GameScreen {
}
}
public void update() {
x += 2;
if (x == gp.tileSize*3) {
x-=2;
}
}
@Override
public void draw(Graphics g2) {
......@@ -32,11 +38,11 @@ public class LanguageScreen extends GameScreen {
this.setGp(gp);
this.draw(100);
Color transparentRed = new Color(0, 0, 0, 200);
g2.setColor(transparentRed);
Color black = Color.BLACK;
g2.setColor(black);
g2.fillRect(0, 0, gp.screenWidth, gp.screenHeight);
g2.setColor(Color.WHITE);
g2.drawImage(img1, 225, gp.tileSize*3, 100, 100, null);
g2.drawImage(img1, x, gp.tileSize*3, 100, 100, null);
if (cmd == 0) {
g2.drawString(">", 150, gp.tileSize*3+75);
this.draw(75);
......@@ -44,7 +50,7 @@ public class LanguageScreen extends GameScreen {
g2.drawString(str, 150, gp.tileSize*8);
}
g2.drawImage(img2, 700, gp.tileSize*3, 100, 100, null);
g2.drawImage(img2, x+500, gp.tileSize*3, 100, 100, null);
if (cmd == 1) {
g2.drawString(">", 650, gp.tileSize*3+75);
this.draw(75);
......@@ -52,5 +58,6 @@ public class LanguageScreen extends GameScreen {
g2.drawString(str, 150, gp.tileSize*8);
}
}
}
......@@ -35,19 +35,19 @@ public class LevelsMenu extends GameScreen {
g2.drawString(s1, centerText(s1), gp.tileSize*2);
this.draw(50);
s2 = "powerUptestingMap";
s2 = "Level 1 - Easy";
g2.drawString(s2, centerText(s2), gp.tileSize*5);
if (cmd == 0) {
g2.drawString(">", centerText(s2)-gp.tileSize, gp.tileSize*5);
}
s3 = "gameMap";
s3 = "Level 2 - Medium";
g2.drawString(s3, centerText(s3), gp.tileSize*6);
if (cmd == 1) {
g2.drawString(">", centerText(s3)-gp.tileSize, gp.tileSize*6);
}
s4 = "testingMap";
s4 = "Level 3 - Hard";
g2.drawString(s4, centerText(s4), gp.tileSize*7);
if (cmd == 2) {
g2.drawString(">", centerText(s4)-gp.tileSize, gp.tileSize*7);
......
package gameState;
import core.DisplayText;
import core.GamePanel;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import core.GamePanel;
public class StartMenu extends GameScreen {
BufferedImage img;
int y = 0;
public StartMenu(GamePanel gp) {
this.gp = gp;
try {
img = ImageIO.read(getClass().getResourceAsStream("/player/Proggy_default1.png"));
} catch (IOException e) {
e.printStackTrace();
}
}
public void update() {
y += 6;
if (y == gp.tileSize*6) {
y-=6;
}
}
@Override
public void draw(Graphics g) {
......@@ -33,8 +52,8 @@ public class StartMenu extends GameScreen {
s5 = "Quit";
}
Color transparent = new Color(0, 0, 0, 0x80); // fourth argument is transparency - try out different values 0x00 - 0xff
g.setColor(transparent);
// Color transparent = new Color(0, 0, 0, 0x80); // fourth argument is transparency - try out different values 0x00 - 0xff
g.setColor(Color.BLACK);
g.fillRect(0, 0, gp.screenWidth, gp.screenHeight);
String text;
......@@ -70,7 +89,7 @@ public class StartMenu extends GameScreen {
if (cmd == 3) {
g.drawString(">", centerText(s5)-gp.tileSize,gp.tileSize*9);
}
g2.drawImage(img, 100, y, 300, 300, null);
}
}
......
......@@ -2,51 +2,48 @@ package gameState;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.ImageIcon;
import core.GamePanel;
public class WinScreen extends GameScreen{
GamePanel gp;
Image image;
public WinScreen(GamePanel gp) {
this.gp = gp;
image = new ImageIcon(getClass().getResource("/graphics/ProggyEnding.gif")).getImage();
}
GamePanel gp;
@Override
public void draw(Graphics g2) {
public WinScreen(GamePanel gp) {
this.gp = gp;
this.setGp(gp);
this.setGraphics(g2);
String s1;
if (gp.getLang() == Languages.NORWEGIAN) {
s1 = "Neste";
}
@Override
public void draw(Graphics g2) {
String s1, s2;
if (gp.getLang() == Languages.NORWEGIAN) {
s1 = "Neste";
s2 = "Du vant!!";
}
else {
s1 = "Next";
s2 = "You won!!";
}
this.setGp(gp);
this.setGraphics(g2);
Color transparent = new Color(0, 0, 0, 0x80);
g2.setColor(transparent);
g2.fillRect(0, 0, gp.screenWidth, gp.screenHeight);
this.draw(50);
g2.setColor(Color.WHITE);
g2.drawString(s2, centerText(s2), gp.tileSize*3);
g2.drawString(s1, centerText(s1)-100, gp.tileSize*10);
g2.drawString(">", centerText(">")-200, gp.tileSize*10);
else {
s1 = "Next";
}
g2.setColor(Color.BLACK);
g2.fillRect(0, 0, gp.screenWidth, gp.screenHeight);
g2.drawImage(image, 250, 50, 600, 600, null);
this.draw(50);
g2.setColor(Color.WHITE);
g2.drawString(s1, centerText(s1)-100, gp.tileSize*10);
g2.drawString(">", centerText(">")-200, gp.tileSize*10);
}
}
......@@ -2,8 +2,6 @@ package gameState;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.ImageIcon;
import core.GamePanel;
......@@ -11,19 +9,15 @@ import core.GamePanel;
public class WinScreen2 extends GameScreen{
GamePanel gp;
Image image;
public WinScreen2(GamePanel gp) {
this.gp = gp;
image = new ImageIcon(getClass().getResource("/graphics/ProggyEnding.gif")).getImage();
}
@Override
public void draw(Graphics g2) {
this.setGp(gp);
this.setGraphics(g2);
String s1;
if (gp.getLang() == Languages.NORWEGIAN) {
......@@ -32,16 +26,25 @@ public class WinScreen2 extends GameScreen{
else {
s1 = "ESC - Back to main menu";
}
this.setGp(gp);
this.setGraphics(g2);
g2.setColor(Color.BLACK);
Color transparent = new Color(0, 0, 0, 0x80);
g2.setColor(transparent);
g2.fillRect(0, 0, gp.screenWidth, gp.screenHeight);
g2.drawImage(image, 200, 200, 500, 500, null);
this.draw(50);
g2.setColor(Color.WHITE);
g2.drawString("HighScore", centerText("HighScore"), gp.tileSize*3);
this.draw(30);
g2.drawString(s1, centerText(s1)-100, gp.tileSize*10);
}
}
......@@ -24,11 +24,11 @@ public class TileLoader {
public TileLoader(GamePanel gp, InputStream is) {
// lag variabler som tar utgangspunkt i input stream sin size
this.mapCols = 64;
this.mapCols = 128;
this.mapRows = 16;
this.gp = gp;
this.tiles = new Tile[20];
this.numOfTiles = new int[64][16];
this.numOfTiles = new int[128][16];
this.is = is;
getTileImage();
......@@ -144,7 +144,7 @@ public class TileLoader {
public void draw(Graphics2D g2, int x) {
int worldCol = 0; //x/gp.maxWorldCol;
int bufferCol = 64;//worldCol + 16;
int bufferCol = 128;//worldCol + 16;
int worldRow = 0;
......@@ -171,8 +171,8 @@ public class TileLoader {
if(worldCol == bufferCol) {
worldCol = 0;
bufferCol ++;
if(bufferCol >= 63) {
bufferCol = 63;
if(bufferCol >= 127) {
bufferCol = 127;
}
worldRow ++;
}
......
......@@ -6,6 +6,7 @@ import javax.swing.Timer;
import core.GamePanel;
import entity.PlayerState;
import gameState.GameState;
public class Time implements ActionListener{
......@@ -53,6 +54,7 @@ public class Time implements ActionListener{
gameOver = true;
}
}
if(gp.gameState == GameState.RUNNING_GAME) {
if(seconds > 0) {
if(startPowerUpTimer == true) {
if (gp.pickedUpPowerUp() == true) {
......@@ -70,6 +72,7 @@ public class Time implements ActionListener{
}
}
}
}
else {
setStartPowerUpTimer(false);
}
......
......@@ -21,7 +21,7 @@ public class TimerDisplay extends DisplayText{
public TimerDisplay(GamePanel gp) {
this.gp=gp;
seconds=60; //change later to wanted time
minutes=0; //change later to wanted time
minutes=2; //change later to wanted time
widthOfScreen=gp.screenWidth;
showTime=new String();
time=new Time(seconds,minutes,showTime,gp);
......
src/main/resources/graphics/ProggyEnding.gif

508 KiB | W: 0px | H: 0px

src/main/resources/graphics/ProggyEnding.gif

22.8 KiB | W: 0px | H: 0px

src/main/resources/graphics/ProggyEnding.gif
src/main/resources/graphics/ProggyEnding.gif
src/main/resources/graphics/ProggyEnding.gif
src/main/resources/graphics/ProggyEnding.gif
  • 2-up
  • Swipe
  • Onion skin
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 7 0 1
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 11 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 9 0 0 0 0 0 0 2 0 0 0 0 1
1 0 0 0 0 0 0 0 0 0 0 8 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 0 0 0 0 0 9 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 12 0 0 0 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 2 0 0 1
1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 2 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1
1 1 1 1 1 1 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 2 0 9 1 0 0 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1
1 1 1 1 1 1 1 7 0 9 0 9 1 8 0 0 0 0 0 0 0 0 7 0 0 0 1 9 0 0 8 1 1 1 0 0 2 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 9 0 0 0 0 0 9 9 0 0 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 6 0 0 0 5 6 1 0 0 1 1 1 1 1 1 1 1 1 1 0 2 2 2 0 0 1 0 0 0 0 0 1 0 0 1 1 1 1 1 0 0 0 0 5 6 5 6 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 0 0 0 4 4 1 0 0 1 1 1 1 1 1 1 1 1 0 0 4 4 4 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 1 9 0 0 9 4 4 4 4 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 0 0 4 4 1 0 0 1 1 1 1 1 1 1 1 1 0 0 4 4 4 0 0 4 0 0 0 0 0 0 0 0 1 1 1 1 1 4 4 0 4 4 4 4 4 1
\ No newline at end of file
......@@ -9,9 +9,9 @@
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 2 2 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 8 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 1
1 0 0 0 0 0 0 0 2 2 0 0 1 0 0 0 2 2 0 0 0 0 0 0 2 2 2 7 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 1
1 0 0 0 0 0 2 2 2 2 0 0 0 0 0 2 2 0 0 0 0 0 0 2 2 2 2 0 0 2 2 0 0 0 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 0 0 0 0 0 0 1
1 0 0 0 0 0 2 2 2 2 0 0 0 0 0 2 2 0 0 0 0 0 0 2 2 2 2 0 0 2 2 0 0 0 0 0 0 0 0 14 0 0 0 0 0 1 0 0 0 0 0 2 2 2 2 2 0 0 0 0 0 0 1
1 0 0 0 0 2 2 2 2 2 0 0 0 0 0 2 2 7 9 0 0 0 1 1 1 1 1 9 9 9 9 9 0 0 0 0 12 8 8 1 1 1 1 1 0 0 0 0 0 0 0 2 2 2 2 2 8 0 0 0 0 0 1
3 3 3 3 3 4 4 4 4 4 0 0 0 0 0 3 3 3 3 0 0 3 3 3 3 3 3 3 3 3 3 3 3 0 0 0 3 3 3 3 3 3 3 3 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 1
4 4 4 4 4 4 4 4 4 4 0 0 0 0 0 4 4 4 4 0 0 4 4 4 4 4 4 4 4 4 4 4 4 0 0 0 4 4 4 4 4 4 4 4 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 1
4 4 4 4 4 4 4 4 4 4 0 0 0 0 0 4 4 4 4 0 0 4 4 4 4 4 4 4 4 4 4 4 4 0 2 0 4 4 4 4 4 4 4 4 1 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 1
4 4 4 4 4 4 4 4 4 4 0 0 0 0 0 4 4 4 4 0 0 4 4 4 4 4 4 4 4 4 4 4 4 0 0 0 4 4 4 4 4 4 4 4 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 1
15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15
15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15
15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15
15 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 8 15
15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 8 7 0 0 0 0 0 0 0 0 0 0 0 0 1 1 15
15 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 1 1 0 0 2 2 2 2 2 0 0 1 1 0 0 1 1 1 0 0 0 15
15 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15
15 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15
15 0 0 0 0 0 0 0 0 0 0 12 0 0 0 9 0 1 1 0 0 0 0 0 0 0 0 0 5 3 3 3 6 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 15
15 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 4 4 4 4 4 14 0 0 7 0 0 0 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 0 0 15
15 0 0 0 0 0 0 9 0 0 7 8 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 4 4 4 4 4 3 3 3 3 3 3 3 6 0 0 7 8 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 16 0 15
15 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 4 4 4 4 4 4 4 4 4 4 4 4 4 0 2 2 2 2 2 2 0 1 1 1 1 1 1 1 1 4 4 4 4 4 15
15 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 9 0 0 7 4 4 4 4 4 4 4 4 4 4 4 4 4 0 2 2 2 2 2 2 0 1 1 1 1 1 1 1 1 4 4 4 4 4 15
15 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 4 4 4 4 0 2 2 2 2 2 2 0 1 1 1 1 1 1 1 1 4 4 4 4 4 15
15 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 4 4 4 4 0 2 2 2 2 2 2 0 1 1 1 1 1 1 1 1 4 4 4 4 4 15
15 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 4 4 4 4 0 2 2 2 2 2 2 0 1 1 1 1 1 1 1 1 4 4 4 4 4 15
\ No newline at end of file
15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15
15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15
15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15
15 12 0 0 0 0 0 0 0 0 0 11 1 0 0 0 0 0 8 0 0 0 0 0 1 0 0 0 0 0 0 0 0 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 7 0 15
15 1 0 7 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 12 0 0 0 0 0 0 0 9 9 0 8 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 11 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15
15 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 9 0 0 0 0 0 0 2 0 0 0 0 15
15 0 0 0 9 0 7 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 15
15 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15
15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 12 0 0 0 0 0 0 0 0 0 0 0 15
15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 8 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 2 0 0 15
15 0 0 0 0 0 0 0 2 2 0 0 1 0 0 0 2 2 0 0 0 0 0 0 2 2 2 7 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 2 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 15
15 0 0 0 0 0 2 2 2 2 0 0 0 0 0 2 2 0 0 0 0 0 0 2 2 2 2 0 0 2 2 0 0 0 0 0 0 0 0 14 0 0 0 0 0 1 0 0 0 0 0 2 2 2 2 2 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 2 0 9 1 0 0 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 15
15 0 0 0 0 2 2 2 2 2 0 0 0 0 0 2 2 7 9 0 0 0 1 1 1 1 1 9 9 9 9 9 0 0 0 0 12 8 8 1 1 1 1 1 0 0 0 0 0 0 0 2 2 2 2 2 8 0 0 0 0 0 1 1 1 1 1 1 7 0 9 0 9 1 8 0 0 0 0 0 0 0 0 7 0 0 0 1 9 0 0 8 1 1 1 0 0 2 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 9 0 0 0 0 0 9 9 0 16 15
15 3 3 3 3 4 4 4 4 4 0 0 0 0 0 3 3 3 3 0 0 3 3 3 3 3 3 3 3 3 3 3 3 0 0 0 3 3 3 3 3 3 3 3 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 6 0 0 0 5 6 1 0 0 1 1 1 1 1 1 1 1 1 1 0 2 2 2 0 0 1 0 0 0 0 0 1 0 0 1 1 1 1 1 0 0 0 0 5 6 5 6 15
15 4 4 4 4 4 4 4 4 4 0 0 0 0 0 4 4 4 4 0 0 4 4 4 4 4 4 4 4 4 4 4 4 0 0 0 4 4 4 4 4 4 4 4 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 0 0 0 4 4 1 0 0 1 1 1 1 1 1 1 1 1 0 0 4 4 4 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 1 9 0 0 9 4 4 4 4 15
15 4 4 4 4 4 4 4 4 4 0 0 0 0 0 4 4 4 4 0 0 4 4 4 4 4 4 4 4 4 4 4 4 0 0 0 4 4 4 4 4 4 4 4 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 0 0 4 4 1 0 0 1 1 1 1 1 1 1 1 1 0 0 4 4 4 0 0 4 0 0 0 0 0 0 0 0 1 1 1 1 1 4 4 0 4 4 4 4 4 15
15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15
15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15
15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15
15 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15
15 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15
15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15
15 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15
15 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 15
15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 9 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 5 3 3 3 3 3 6 0 0 0 0 0 0 0 0 5 3 6 0 0 0 0 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 3 3 3 6 0 0 0 0 0 0 0 0 0 0 0 0 5 3 6 0 5 15
15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 3 4 0 4 3 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 3 3 4 0 0 0 0 0 0 0 0 9 0 0 5 3 3 6 0 0 0 0 0 0 15
15 1 1 1 1 1 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 0 8 0 9 0 7 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 8 12 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 4 0 0 0 0 0 0 0 0 5 3 3 3 6 0 0 0 0 0 0 0 0 0 0 0 15
15 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 3 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 3 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15
15 1 1 1 1 1 1 1 0 0 9 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 0 0 5 3 3 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 3 0 0 9 0 0 0 7 7 0 15
15 1 1 1 1 1 1 1 3 3 3 3 3 3 3 3 3 3 3 3 3 6 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3 3 3 3 3 3 3 6 0 5 3 3 3 1 0 0 0 0 0 0 0 0 0 0 1 3 3 3 3 3 3 4 4 4 4 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 3 3 3 3 3 3 3 3 3 15
15 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 4 4 4 4 4 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 0 4 4 4 4 1 0 0 0 0 0 0 0 0 0 0 1 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 15
15 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 4 4 4 4 4 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 0 4 4 4 4 1 0 0 0 0 0 0 0 0 0 0 1 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 15