Skip to content

Merging from Master #27

Merged
merged 12 commits into from
Apr 11, 2015
3 changes: 2 additions & 1 deletion MerchantRPGCSE2102/.classpath
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="lib" path="hamcrest-core-1.3.jar"/>
<classpathentry kind="lib" path="junit-4.11.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
<classpathentry kind="output" path="bin"/>
</classpath>
6 changes: 3 additions & 3 deletions MerchantRPGCSE2102/.settings/org.eclipse.jdt.core.prefs
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.7
org.eclipse.jdt.core.compiler.compliance=1.6
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.enumIdentifier=error
org.eclipse.jdt.core.compiler.source=1.7
org.eclipse.jdt.core.compiler.source=1.6
88 changes: 42 additions & 46 deletions MerchantRPGCSE2102/src/controller/RPGame.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public class RPGame {
private ArrayList<String> playerInventoryList = new ArrayList<String>(); // the player's inventory list
private Player _player;
private Merchant _merchant1, _merchant2, _merchant3;
private boolean _movement;
public boolean _movement = true;
private int _currentDay;
private int _transactionLimit;

Expand Down Expand Up @@ -140,6 +140,7 @@ public void createTransaction(Player player, Merchant targetMerchant)
}
}


/**
* Will refresh number of transactions the Player has available
*
Expand Down Expand Up @@ -275,51 +276,46 @@ public static void main(String[] args) throws InterruptedException
ArrayList<String> playerInventory = _rpg.getMerchantInventoryList(1);
playerInventory.addAll(_rpg.getMerchantInventoryList(2));
playerInventory.addAll(_rpg.getMerchantInventoryList(3));
_rpg.buildPlayer("test", 500, playerInventory);
_rpg.getPlayer().getItem("armor").increaseQuantity(15);
_rpg.buildPlayer("test", 500, playerInventory);


// SETTING UP PLAYER AND MERCHANT
Player player = new Player("Player", 0, null);
Merchant merch1 = new Merchant("Bill", 0, null);
Merchant merch2 = new Merchant("Joe", 0, null);
Merchant merch3 = new Merchant("Sam", 0, null);

// CREATING MAP AND INITIALIZE PLAYER AND MERCHANTS
Map map = new Map(30, 40);
map.initializePlayer(player, 15, 20);
map.initializeMerchant(merch1, 15, 0);
map.initializeMerchant(merch2, 29, 20);
map.initializeMerchant(merch3, 15, 39);

// CREATING JFRAME WINDOW
JFrame frame = new JFrame("Merchant RPG");

// CREATING MAPUI AND SPRITES
MapUI mapui = new MapUI(map, _rpg);
mapui.createPlayerSprite(15, 20);
mapui.addMerchantSprite(15, 0);
mapui.addMerchantSprite(29, 20);
mapui.addMerchantSprite(15, 39);

// ADDING MAPUI TO JFRAME
frame.add(mapui);

// SETTING PROPERTIES OF JFRAME
frame.setSize(RPGame.WIDTH, RPGame.HEIGHT);
frame.setResizable(false);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
_rpg.getPlayer().getItem("WoodPlanks").increaseQuantity(15);


// MAIN GAME LOOP
while (true) {
mapui.move();
mapui.repaint();
Thread.sleep(100/12); // Controls the speed of the game (currently 120 frames/second)
}

// SETTING UP PLAYER AND MERCHANT
Player player = new Player("Player", 0, null);
Merchant merch1 = new Merchant("Bill", 0, null);
Merchant merch2 = new Merchant("Joe", 0, null);
Merchant merch3 = new Merchant("Sam", 0, null);

// CREATING MAP AND INITIALIZE PLAYER AND MERCHANTS
Map map = new Map(30, 40);
map.initializePlayer(player, 15, 20);
map.initializeMerchant(merch1, 15, 0);
map.initializeMerchant(merch2, 29, 20);
map.initializeMerchant(merch3, 15, 39);

// CREATING JFRAME WINDOW
JFrame frame = new JFrame("Merchant RPG");

// CREATING MAPUI AND SPRITES
MapUI mapui = new MapUI(map,_rpg);
mapui.createPlayerSprite(15, 20);
mapui.addMerchantSprite(15, 0);
mapui.addMerchantSprite(29, 20);
mapui.addMerchantSprite(15, 39);

// ADDING MAPUI TO JFRAME
frame.add(mapui);

// SETTING PROPERTIES OF JFRAME
frame.setSize(RPGame.WIDTH, RPGame.HEIGHT);
frame.setResizable(false);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);

// MAIN GAME LOOP
while (true) {
mapui.move();
mapui.repaint();
Thread.sleep(100/12); // Controls the speed of the game (currently 120 frames/second)
}
}
}
Binary file added MerchantRPGCSE2102/src/images/testsprite.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
104 changes: 104 additions & 0 deletions MerchantRPGCSE2102/src/sprites/Animation.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
package sprites;

import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.List;


public class Animation {

private int frameCount; // Counts ticks for change
private int frameDelay; // frame delay 1-12 (You will have to play around with this)
private int currentFrame; // animations current frame
private int animationDirection; // animation direction (i.e counting forward or backward)
private int totalFrames; // total amount of frames for your animation

private boolean stopped; // has animations stopped

private List<Frame> frames = new ArrayList<Frame>(); // Arraylist of frames

public Animation(BufferedImage[] frames, int frameDelay) {
this.frameDelay = frameDelay;
this.stopped = true;

for (int i = 0; i < frames.length; i++) {
addFrame(frames[i], frameDelay);
}

this.frameCount = 0;
this.frameDelay = frameDelay;
this.currentFrame = 0;
this.animationDirection = 1;
this.totalFrames = this.frames.size();

}

public void start() {
if (!stopped) {
return;
}

if (frames.size() == 0) {
return;
}

stopped = false;
}

public void stop() {
if (frames.size() == 0) {
return;
}

stopped = true;
}

public void restart() {
if (frames.size() == 0) {
return;
}

stopped = false;
currentFrame = 0;
}

public void reset() {
this.stopped = true;
this.frameCount = 0;
this.currentFrame = 0;
}

private void addFrame(BufferedImage frame, int duration) {
if (duration <= 0) {
System.err.println("Invalid duration: " + duration);
throw new RuntimeException("Invalid duration: " + duration);
}

frames.add(new Frame(frame, duration));
currentFrame = 0;
}

public BufferedImage getSprite() {
return frames.get(currentFrame).getFrame();
}

public void update() {
if (!stopped) {
frameCount++;

if (frameCount > frameDelay) {
frameCount = 0;
currentFrame += animationDirection;

if (currentFrame > totalFrames - 1) {
currentFrame = 0;
}
else if (currentFrame < 0) {
currentFrame = totalFrames - 1;
}
}
}

}

}
31 changes: 31 additions & 0 deletions MerchantRPGCSE2102/src/sprites/Frame.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package sprites;

import java.awt.image.BufferedImage;

public class Frame {

private BufferedImage frame;
private int duration;

public Frame(BufferedImage frame, int duration) {
this.frame = frame;
this.duration = duration;
}

public BufferedImage getFrame() {
return frame;
}

public void setFrame(BufferedImage frame) {
this.frame = frame;
}

public int getDuration() {
return duration;
}

public void setDuration(int duration) {
this.duration = duration;
}

}
43 changes: 41 additions & 2 deletions MerchantRPGCSE2102/src/sprites/PlayerSprite.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.event.KeyEvent;
import java.awt.image.BufferedImage;

import view.MapUI;

public class PlayerSprite {
Expand All @@ -23,6 +25,23 @@ public class PlayerSprite {
private boolean rightBeingPressed = false;
private boolean downBeingPressed = false;
private boolean upBeingPressed = false;

// Images for each animation
private BufferedImage[] walkingLeft = {Sprite.getSprite(0, 1), Sprite.getSprite(2, 1)}; // Gets the upper left images of my sprite sheet
private BufferedImage[] walkingRight = {Sprite.getSprite(0, 2), Sprite.getSprite(2, 1)};
private BufferedImage[] walkingUp = {Sprite.getSprite(0, 1), Sprite.getSprite(2, 1)}; // Gets the upper left images of my sprite sheet
private BufferedImage[] walkingDown = {Sprite.getSprite(0, 2), Sprite.getSprite(2, 1)};
private BufferedImage[] standing = {Sprite.getSprite(1, 0)};

// Animation states
private Animation walkLeft = new Animation(walkingLeft, 10);
private Animation walkRight = new Animation(walkingRight, 10);
private Animation walkUp = new Animation(walkingUp, 10);
private Animation walkDown = new Animation(walkingDown, 10);
private Animation standing1 = new Animation(standing, 10);

// Actual animation
private Animation animation = standing1;

public PlayerSprite(MapUI mapui, int row, int col) {
this.x = col*WIDTH;
Expand All @@ -39,19 +58,27 @@ public PlayerSprite(MapUI mapui, int row, int col) {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_LEFT) {
dx = -1;
animation = walkLeft;
animation.start();
leftBeingPressed = true;
}
if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
dx = 1;
animation = walkRight;
animation.start();
rightBeingPressed = true;
}

if (e.getKeyCode() == KeyEvent.VK_UP) {
dy = -1;
animation = walkUp;
animation.start();
upBeingPressed = true;
}
if (e.getKeyCode() == KeyEvent.VK_DOWN) {
dy = 1;
animation = walkDown;
animation.start();
downBeingPressed = true;
}
}
Expand Down Expand Up @@ -89,6 +116,15 @@ public void keyReleased(KeyEvent e) {
if (upBeingPressed == false) // Sprite will stop only when the UP key is not being pressed
dy = 0;
}
if (e.getKeyCode() == KeyEvent.VK_F){
if((mapui.getMap().collisionTo("east"))||(mapui.getMap().collisionTo("west"))||(mapui.getMap().collisionTo("south"))||(mapui.getMap().collisionTo("north"))||(mapui.getMap().collisionTo("northeast"))||(mapui.getMap().collisionTo("northwest"))||(mapui.getMap().collisionTo("southeast"))||(mapui.getMap().collisionTo("southwest"))){
System.out.println("Transaction starting"); // For testing purposes
mapui.game.createTransaction(null, null);//RPGame initialize Trade
}
else{
return;
}
}

// This fixes some bugs with holding three keys down at once and letting go of two (Basically ensures that dx and dy match which keys are currently being held)
if(leftBeingPressed)
Expand Down Expand Up @@ -177,15 +213,18 @@ public void move() {
public void resetLocation() {
x = initialX;
y = initialY;
changeInX = 15;
changeInY = 15;

}

/**
* Paints the sprite at its current location
* @param g Graphics2D for painting
*/
public void paint(Graphics2D g) {
g.setColor(color);
g.fillOval(getX(), getY(), WIDTH, WIDTH);

g.drawImage(animation.getSprite(), x, y, null);
}

/**
Expand Down
Loading