# HG changeset patch # User Matti Hamalainen # Date 1296246105 -7200 # Node ID d8e7fd8f3ccf719a15d02f11631f90061a512689 # Parent 70714c229e23dc9824e30ebb8261d61f6a699f90 Cleanups. diff -r 70714c229e23 -r d8e7fd8f3ccf Ristipolku.java --- a/Ristipolku.java Fri Jan 28 20:23:21 2011 +0200 +++ b/Ristipolku.java Fri Jan 28 22:21:45 2011 +0200 @@ -15,6 +15,8 @@ import java.io.*; import game.*; +import javax.sound.sampled.*; + class PathInfo { @@ -32,6 +34,43 @@ } } +/* +class AnimatedElement +{ + float x, y, stime, value; + Interpolate lerp; + boolean active; + + public AnimatedElement(float x, float y, ) + { + stime = 0; + this.x = x; + this.y = y; + + } + + public animate(float time) + { + if (!active) + { + active = true; + stime = time; + } + + float t = (time - stime) / 10.0f; + if (t < 100) + value = lerp.getValue(t); + else + { + + } + } + + public paint(Graphics2D g, ); + { + } +} +*/ class GameBoard { @@ -39,6 +78,7 @@ public static final int boardMiddle = 4; Piece[][] board; Piece current; + public boolean flagGameOver; int moveX, moveY, movePoint; @@ -51,6 +91,10 @@ moveX = boardMiddle; moveY = boardMiddle - 1; movePoint = 0; + + + + flagGameOver = false; } public void paint(Graphics2D g, int sx, int sy, float scale) @@ -88,10 +132,10 @@ current.rotate(dir); } - public PathInfo resolvePath(int startX, int startY, int startPoint) + public PathInfo resolvePath(int startX, int startY, int startPoint, boolean mark) { int x = startX, y = startY; - int point; + int point = -1; Piece curr = getPiece(startX, startY); if (curr == null) @@ -99,7 +143,8 @@ while (curr != null) { - +// curr.(true); +// elements.spawn("", ); } return new PathInfo(startPoint, startX, startY, point, x, y); @@ -110,36 +155,46 @@ if (current != null) { current.setType(PieceType.LOCKED); - PathInfo i = resolvePath(moveX, moveY, movePoint); + PathInfo i = resolvePath(moveX, moveY, movePoint, true); if (i != null) { - } } + current = new Piece(PieceType.ACTIVE); if (isEmpty(moveX, moveY)) { - current = new Piece(PieceType.ACTIVE); - lauta.setPiece(moveX, moveY, current); + board[moveX][moveY] = current; + } + else + { + PathInfo i = resolvePath(moveX, moveY, movePoint, true); + if (i != null) + board[moveX][moveY] = current; + else + flagGameOver = true; } } } -public class Ristipolku extends JApplet - implements KeyListener +public class Ristipolku extends JPanel + implements Runnable, KeyListener { + Thread animThread; + boolean animEnable = false; GameBoard lauta = null; BufferedImage lautaBG = null; + float clock; public void init() { - getContentPane().setBackground(Color.white); + clock = 0; try { - lautaBG = ImageIO.read(new File("background.jpg")); + lautaBG = ImageIO.read(new File("board.png")); } catch (IOException e) @@ -150,8 +205,32 @@ JOptionPane.ERROR_MESSAGE); } + startThreads(); + lauta = new GameBoard(); addKeyListener(this); + + startThreads(); + } + + public void startThreads() + { + if (animThread == null) + { + animThread = new Thread(this); + animEnable = true; + animThread.start(); + } + } + + public void stopThreads() + { + if (animThread != null) + { + animThread.interrupt(); + animEnable = false; + animThread = null; + } } public void paint(Graphics g) @@ -191,4 +270,14 @@ break; } } + + public void run() + { + while (animEnable) + { + clock++; + + Thread.sleep(100); + } + } }