commit 6996b5a925fa34c5ca0a182beaf867229904e8db Author: Henrik Bygren Date: Thu Sep 28 08:22:09 2023 +0200 init diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..19f2c14 --- /dev/null +++ b/.classpath @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..dd61a36 --- /dev/null +++ b/.gitignore @@ -0,0 +1,21 @@ +/.DS_Store +*target* +*.class +/doc/ +/lib/ +# eclipse specific git ignore +.DS_Store . +metadata +bin/** +tmp/** +tmp/**/* +*.tmp +*.bak +*.swp +*~.nib +local.properties +.loadpath +# External tool builders +.externalToolBuilders/ +# Locally stored "Eclipse launch configurations" +*.launch diff --git a/.project b/.project new file mode 100644 index 0000000..090b485 --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + game-test + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..99f26c0 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..ef0604b --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,14 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/resources/playerImg.png b/resources/playerImg.png new file mode 100644 index 0000000..3803a86 Binary files /dev/null and b/resources/playerImg.png differ diff --git a/src/se/egyweb/game/Game.java b/src/se/egyweb/game/Game.java new file mode 100644 index 0000000..6409654 --- /dev/null +++ b/src/se/egyweb/game/Game.java @@ -0,0 +1,99 @@ +package se.egyweb.game; + +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; +import java.util.HashMap; + +import se.egy.graphics.*; + +public class Game implements KeyListener{ + + private boolean gameRunning = true; + private int width = 800; + private int height = 600; + + private GameScreen gameScreen = new GameScreen("Game", width, height, true); // false vid testkörning + + private ImgContainer player; + + private HashMap keyDown = new HashMap<>(); + + public Game(){ + gameScreen.setKeyListener(this); + keyDown.put("left", false); + keyDown.put("right", false); + keyDown.put("esc", false); + + loadImages(); + gameLoop(); + } + + public void loadImages(){ + player = new ImgContainer(500, 0, "/playerImg.png"); + } + + public void update(){ + if(keyDown.get("right")) + player.setX(player.getX() + 5); + if(keyDown.get("left")){ + player.setX(player.getX() - 12); + } + if(keyDown.get("esc")) { + gameRunning = false; + System.exit(0); + } + + if(player.getX()+player.getWidth() > width) { + player.setX(width - player.getWidth()); + } + + if(player.getX() < 0) { + player.setX(0); + } + } + + public void render(){ + gameScreen.render(player); + } + + public void gameLoop(){ + while(gameRunning){ + update(); + render(); + // Fördröjning + try { + Thread.sleep(10); + } catch (InterruptedException e) {} + } + } + + /** Spelets tangentbordslyssnare */ + public void keyTyped(KeyEvent e) { + } + + public void keyPressed(KeyEvent e) { + int key = e.getKeyCode(); + + if(key == KeyEvent.VK_LEFT) + keyDown.put("left", true); + else if(key == KeyEvent.VK_RIGHT) + keyDown.put("right", true); + else if(key == KeyEvent.VK_ESCAPE) + keyDown.put("esc", true); + } + + public void keyReleased(KeyEvent e) { + int key = e.getKeyCode(); + + if(key == KeyEvent.VK_LEFT) + keyDown.put("left", false); + else if(key == KeyEvent.VK_RIGHT) + keyDown.put("right", false); + } + + + public static void main(String[] args) { + new Game(); + } +} + diff --git a/src/se/egyweb/game/GameTest.java b/src/se/egyweb/game/GameTest.java new file mode 100644 index 0000000..a6f381c --- /dev/null +++ b/src/se/egyweb/game/GameTest.java @@ -0,0 +1,29 @@ +package se.egyweb.game; + +import se.egy.graphics.*; + +public class GameTest { + + public static void main(String[] args) { + // Skapar ett spelfönster + GameScreen gameScreen = new GameScreen("Test", 1024, 768, false); + + // Skapar och laddar in en bild med en x,y-koordinat. + ImgContainer ic = new ImgContainer(200, 100, "playerImg.png"); + + for(int i = 0; i < 100; i++) { + gameScreen.render(ic); // renderar bilden + + try{ Thread.sleep(20);}catch(Exception e){}; // pausar i 20 ms + + // Förflyttar bilden genom att öka x,y - koordinaterna med 5 + int newX = ic.getX() + 4; + int newY = ic.getY() + 4; + + ic.setX(newX); + ic.setY(newY); + } + //System.exit(0); + } +} +