|
|
@ -2,16 +2,12 @@ package sig; |
|
|
|
|
|
|
|
|
|
|
|
import sig.engine.AnimatedSprite; |
|
|
|
import sig.engine.AnimatedSprite; |
|
|
|
import sig.engine.Color; |
|
|
|
import sig.engine.Color; |
|
|
|
import sig.engine.Font; |
|
|
|
|
|
|
|
import sig.engine.Key; |
|
|
|
import sig.engine.Key; |
|
|
|
import sig.engine.Mouse; |
|
|
|
|
|
|
|
import sig.engine.Panel; |
|
|
|
import sig.engine.Panel; |
|
|
|
import sig.engine.Point; |
|
|
|
|
|
|
|
import sig.engine.Sprite; |
|
|
|
import sig.engine.Sprite; |
|
|
|
import sig.engine.Transform; |
|
|
|
|
|
|
|
import sig.engine.PolygonStructure; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import java.awt.event.KeyEvent; |
|
|
|
import java.awt.event.KeyEvent; |
|
|
|
|
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.List; |
|
|
|
import java.util.List; |
|
|
|
|
|
|
|
|
|
|
|
class Player{ |
|
|
|
class Player{ |
|
|
@ -20,6 +16,23 @@ class Player{ |
|
|
|
|
|
|
|
|
|
|
|
double animationFrame=0; |
|
|
|
double animationFrame=0; |
|
|
|
double animationSpd=2; //Animation Speed will be 2 frames per second
|
|
|
|
double animationSpd=2; //Animation Speed will be 2 frames per second
|
|
|
|
|
|
|
|
int TAIL_SPACING=32; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<Tail> tail = new ArrayList<Tail>(); |
|
|
|
|
|
|
|
List<PositionMarker> path = new ArrayList<PositionMarker>(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Tail{ |
|
|
|
|
|
|
|
double x,y; |
|
|
|
|
|
|
|
Tail(List<PositionMarker> tailTrail,int TAIL_SPACING){ |
|
|
|
|
|
|
|
for (int i=0;i<TAIL_SPACING;i++) { |
|
|
|
|
|
|
|
tailTrail.add(new PositionMarker()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class PositionMarker{ |
|
|
|
|
|
|
|
double x,y; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public class JavaProjectTemplate { |
|
|
|
public class JavaProjectTemplate { |
|
|
@ -35,6 +48,25 @@ public class JavaProjectTemplate { |
|
|
|
//Initialize your game here.
|
|
|
|
//Initialize your game here.
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void GeneratePath(){ |
|
|
|
|
|
|
|
double prev_tail_x=pl.x; |
|
|
|
|
|
|
|
double prev_tail_y=pl.y; |
|
|
|
|
|
|
|
for (int i=0;i<pl.path.size();i++) { |
|
|
|
|
|
|
|
PositionMarker t = pl.path.get(i); |
|
|
|
|
|
|
|
double prevpos_x=t.x; |
|
|
|
|
|
|
|
double prevpos_y=t.y; |
|
|
|
|
|
|
|
t.x=prev_tail_x; |
|
|
|
|
|
|
|
t.y=prev_tail_y; |
|
|
|
|
|
|
|
prev_tail_x=prevpos_x; |
|
|
|
|
|
|
|
prev_tail_y=prevpos_y; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
for (int i=0;i<pl.tail.size();i++) { |
|
|
|
|
|
|
|
Tail t = pl.tail.get(i); |
|
|
|
|
|
|
|
t.x=pl.path.get(i*pl.TAIL_SPACING).x; |
|
|
|
|
|
|
|
t.y=pl.path.get(i*pl.TAIL_SPACING).y; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public void updateGame(double fElapsedTime) { |
|
|
|
public void updateGame(double fElapsedTime) { |
|
|
|
//Put game update logic in here.
|
|
|
|
//Put game update logic in here.
|
|
|
|
|
|
|
|
|
|
|
@ -55,49 +87,24 @@ public class JavaProjectTemplate { |
|
|
|
pl.y+=200*fElapsedTime; |
|
|
|
pl.y+=200*fElapsedTime; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (Mouse.isPressed(2)) { //If middle click is pressed, reset the player position.
|
|
|
|
if (Key.isPressed(KeyEvent.VK_SPACE)) { |
|
|
|
pl.x=pl.y=200; |
|
|
|
pl.tail.add(new Tail(pl.path,pl.TAIL_SPACING)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
GeneratePath(); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public void drawGame() { |
|
|
|
public void drawGame() { |
|
|
|
//Put rendering logic in here.
|
|
|
|
//Put rendering logic in here.
|
|
|
|
|
|
|
|
|
|
|
|
game.Clear(Color.BRIGHT_BLUE); //Clear the screen so all pixels from the previous frame are removed.
|
|
|
|
game.Clear(Color.BRIGHT_BLUE); //Clear the screen so all pixels from the previous frame are removed.
|
|
|
|
|
|
|
|
game.Fill_Rect(pl.x, pl.y, 64, 64, Color.BLACK); |
|
|
|
|
|
|
|
|
|
|
|
game.Draw(100,20,Color.BLACK); //That's not a dead pixel, it's a black one!
|
|
|
|
for (int i=0;i<pl.tail.size();i++) { |
|
|
|
game.Draw_Line(10,10,35,35,Color.BLACK); //Line Drawing
|
|
|
|
Tail t = pl.tail.get(i); |
|
|
|
|
|
|
|
game.FillCircle(t.x+22, t.y+22, 10, Color.BLUE); |
|
|
|
game.Draw_Sprite(450,75,bookSpr,Color.GREEN); //Sprite drawing (with green tint)
|
|
|
|
game.Draw_Circle((int)t.x+22, (int)t.y+22, 10, Color.BLACK); |
|
|
|
game.Draw_Sprite(450,75+bookSpr.getHeight(),bookSpr,Transform.VERTICAL); //Sprite drawing with vertical flip
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
game.Draw_Animated_Sprite(pl.x,pl.y,pl.spr,pl.animationFrame); //Animated Sprite drawing
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
game.Draw_Text(10,40,"Mouse X: "+Mouse.x+" Mouse Y:"+Mouse.y,Font.PROFONT_12); //Draw Mouse coordinates in tiny font
|
|
|
|
|
|
|
|
game.Draw_Text_Ext(10,52,"Hello World 2!",Font.PROFONT_36,Color.MAGENTA); //Draw in larger font
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
game.Fill_Triangle(160,160,190,190,50,250,new Color(255,0,0,150)); //Draw a translucent colored triangle
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
game.FillTexturedPolygon( //Define the uv tex coords of a polygon and a sprite and draw a texture onto it
|
|
|
|
|
|
|
|
List.of( |
|
|
|
|
|
|
|
new Point<Double>(600d,400d), |
|
|
|
|
|
|
|
new Point<Double>(600d,550d), |
|
|
|
|
|
|
|
new Point<Double>(750d,550d), |
|
|
|
|
|
|
|
new Point<Double>(750d,0d) |
|
|
|
|
|
|
|
), |
|
|
|
|
|
|
|
List.of( |
|
|
|
|
|
|
|
new Point<Double>(0d,0d), |
|
|
|
|
|
|
|
new Point<Double>(0d,1d), |
|
|
|
|
|
|
|
new Point<Double>(1d,1d), |
|
|
|
|
|
|
|
new Point<Double>(1d,0d) |
|
|
|
|
|
|
|
), |
|
|
|
|
|
|
|
List.of( |
|
|
|
|
|
|
|
new Color(0,0,0,255), |
|
|
|
|
|
|
|
Color.WHITE, |
|
|
|
|
|
|
|
Color.RED, |
|
|
|
|
|
|
|
Color.WHITE |
|
|
|
|
|
|
|
), bookSpr, PolygonStructure.FAN); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public static void main(String[] args) { |
|
|
|
public static void main(String[] args) { |
|
|
|