12/1/2013

Rashidul Islam
No

Description

Page

Task 1

a)

The application that I produce

1

Task 2
a)

Screen shots

25

Task 3
a)

Class diagra...
Task 1:
The application that I have created:
a) Class - SuitableLocation.java:

------------------------------------------...
1.) Documentation:

Constructor Summary
SuitableLocation(int i, int j)

b) Class - Crate.java:

--------------------------...
1.) Documentation:
Constructor Summary
Crate(int i, int j)

c) Class - PlayerCharacter.java:

----------------------------...
1.) Documentation:

sokobangame
Class PlayerCharacter
java.lang.Object
sokobangame.User
sokobangame.PlayerCharacter
public...
d) Class - Obstacle.java:

---------------------------------------------------------------------------

1.) Documentation:...
e) Class - User.java:

Rashidul Islam
Rashidul Islam
---------------------------------------------------------------------------

1.) Documentation:

Constructor Summary
User(...
public class Panel extends JPanel {
/**

*
*/
// instance variables
//Attributes: instance variables of an object

/**
* C...
private ArrayList<SuitableLocation> SuitLo = new
ArrayList<SuitableLocation>();
private PlayerCharacter PlayerChar;
privat...
public final void initWorld() {
btn1 = new JButton("Level 1");
btn1.setBounds(10000, 1000, 200, 50);
this.add(btn1);
Font ...
btn6.setBounds(500, 1275, 200, 50);
this.add(btn6);
Font k = new Font("Courier New",
Font.LAYOUT_LEFT_TO_RIGHT,24);
btn6.s...
y += SPACE;
if (this.w < x) {
this.w = x;
}
x = OFFSET;
} else if (item == '#') {
wall = new Obstacle(x, y);
obs.add(wall)...
for (int i = 0; i < world.size(); i++) {
User item = (User) world.get(i);
if ((item instanceof PlayerCharacter)
|| (item i...
if (key == KeyEvent.VK_LEFT) {
if (checkWallCollision(PlayerChar,
LEFT_COLLISION)) {
return;
}
if (checkBagCollision(LEFT_...
} else if (key == KeyEvent.VK_DOWN) {
if (checkWallCollision(PlayerChar,
BOTTOM_COLLISION)) {
return;
}
if (checkBagCollis...
}

return true;

}
return false;
} else if (type == TOP_COLLISION) {
for (int i = 0; i < obs.size(); i++) {
Obstacle wall ...
if (!bag.equals(item)) {
if (bag.isLeftCollision(item)) {
return true;
}
}
if (checkWallCollision(bag,
LEFT_COLLISION)) {
...
return false;
} else if (type == TOP_COLLISION) {
for (int i = 0; i < crates.size(); i++) {
Crate bag = (Crate) crates.get...
}

return true;

}
if (checkWallCollision(bag,
BOTTOM_COLLISION)) {
return true;
}

}
}

}

}

}
bag.move(0, SPACE);
isSol...
public void restartStage() {

}

}

SuitLo.clear();
crates.clear();
obs.clear();
initWorld();
if (solved) {
solved = false...
Rashidul Islam
---------------------------------------------------------------------------

1.) Documentation:

Constructor Summary
Game(...
Fig: Level Solved

b) Level-2:

Fig: starting position

Rashidul Islam
Fig: level solved

b) Level-3:

Fig: starting position

Rashidul Islam
Fig: level solved

c) Level-4:

Fig: starting position

Rashidul Islam
Fig: level solved

d) Level-5:

Fig: starting position

Rashidul Islam
Fig: starting position with buttons

---------------------------------------------------------------------------

Task 3:
...
Fig: Level One

Rashidul Islam
ii)

Testing Data By BlueJ:

Fig : Testing Data By BlueJ

Rashidul Islam
Rashidul Islam
Rashidul Islam
Upcoming SlideShare
Loading in …5
×

Sokoban Game Development Using Java ( Updated using Screenshots & Class Diagrams )

853 views

Published on

Sokoban Game Development using Java | Rashidul Islam

Tools Used: BlueJ, StarUML, JCreator, Eclipse, Netbeans, DrJava, GreenFoot etc.

Published in: Technology, Spiritual
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
853
On SlideShare
0
From Embeds
0
Number of Embeds
40
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Sokoban Game Development Using Java ( Updated using Screenshots & Class Diagrams )

  1. 1. 12/1/2013 Rashidul Islam
  2. 2. No Description Page Task 1 a) The application that I produce 1 Task 2 a) Screen shots 25 Task 3 a) Class diagrams Rashidul Islam 30
  3. 3. Task 1: The application that I have created: a) Class - SuitableLocation.java: --------------------------------------------------------------------------- Rashidul Islam
  4. 4. 1.) Documentation: Constructor Summary SuitableLocation(int i, int j) b) Class - Crate.java: --------------------------------------------------------------------------- Rashidul Islam
  5. 5. 1.) Documentation: Constructor Summary Crate(int i, int j) c) Class - PlayerCharacter.java: --------------------------------------------------------------------------- Rashidul Islam
  6. 6. 1.) Documentation: sokobangame Class PlayerCharacter java.lang.Object sokobangame.User sokobangame.PlayerCharacter public class PlayerCharacterextends sokobangame.User Constructor Summary PlayerCharacter(int i, int j) Rashidul Islam
  7. 7. d) Class - Obstacle.java: --------------------------------------------------------------------------- 1.) Documentation: Constructor Summary Obstacle(int i, int j) Rashidul Islam
  8. 8. e) Class - User.java: Rashidul Islam
  9. 9. Rashidul Islam
  10. 10. --------------------------------------------------------------------------- 1.) Documentation: Constructor Summary User(int x, int y) ---------------------------------------------------------------------------------------------f) Class - Panel.java: --------------------------------------------------------------------------package sokobangame; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; /**import java.awt.event.ActionEvent;*/ import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.util.ArrayList; import javax.swing.JButton; import javax.swing.JPanel; /** * * * @author (Md. Rashidul Islam) * @version () */ Rashidul Islam
  11. 11. public class Panel extends JPanel { /** * */ // instance variables //Attributes: instance variables of an object /** * Constructor for objects of class Panel */ private static final long serialVersionUID = 1L; private final int OFFSET = 30; private JButton btn1; /*type: JButton, variable: btn1 */ private JButton btn2; private JButton btn3; private JButton btn4; private JButton btn5; private JButton btn6; private JButton btn7; //private JButton btnQuit; private final int SPACE = 20; private final int LEFT_COLLISION = 1; private final int RIGHT_COLLISION = 2; private final int TOP_COLLISION = 3; private final int BOTTOM_COLLISION = 4; private ArrayList<Obstacle> obs = new ArrayList<Obstacle>(); private ArrayList<Crate> crates = new ArrayList<Crate>(); Rashidul Islam
  12. 12. private ArrayList<SuitableLocation> SuitLo = new ArrayList<SuitableLocation>(); private PlayerCharacter PlayerChar; private int w = 0; private int h = 0; private boolean solved = false; private String stage = " ######n" + " ## #n" + " ##$ #n" + " #### $##n" + " ## $ $ #n" + "#### # ## # ######n" + "## # ## ##### ..#n" + "## $ $ ..#n" + "###### ### #@## ..#n" + " ## #########n" + " ########n"; public Panel() { // initialise instance variables addKeyListener(new TAdapter()); setFocusable(true); initWorld(); } /** */ public int getBoardWidth() { return this.w; } public int getBoardHeight() { return this.h; } Rashidul Islam
  13. 13. public final void initWorld() { btn1 = new JButton("Level 1"); btn1.setBounds(10000, 1000, 200, 50); this.add(btn1); Font f = new Font("Courier New", Font.LAYOUT_LEFT_TO_RIGHT,24); btn1.setFont(f); btn2 = new JButton("Level 2"); btn2.setBounds(10000, 1055, 200, 50); this.add(btn2); Font g = new Font("Monospaced", Font.LAYOUT_LEFT_TO_RIGHT,24); btn2.setFont(g); btn3 = new JButton("Level 3"); btn3.setBounds(10000, 1110, 200, 50); this.add(btn3); Font n = new Font("Monospaced", Font.LAYOUT_LEFT_TO_RIGHT,24); btn3.setFont(n); btn4 = new JButton("Level 4"); btn4.setBounds(500, 1165, 200, 50); this.add(btn4); Font m = new Font("Monospaced", Font.LAYOUT_LEFT_TO_RIGHT,24); btn4.setFont(m); btn5 = new JButton("Level 5"); btn5.setBounds(500, 1220, 200, 50); this.add(btn5); Font j = new Font("Monospaced", Font.LAYOUT_LEFT_TO_RIGHT,24); btn5.setFont(j); btn6 = new JButton("Steps"); Rashidul Islam
  14. 14. btn6.setBounds(500, 1275, 200, 50); this.add(btn6); Font k = new Font("Courier New", Font.LAYOUT_LEFT_TO_RIGHT,24); btn6.setFont(k); btn7 = new JButton("Exit"); btn7.setBounds(500, 1330, 200, 50); this.add(btn7); Font l = new Font("Courier New", Font.LAYOUT_LEFT_TO_RIGHT,24); btn7.setFont(l); /**btnQuit = new JButton("Quit"); btnQuit.setBounds(440, 380, 100, 50); btnQuit.setFont(f); btnQuit.addActionListener(this); this.add(btnQuit); this.setVisible(true);*/ }*/ /**public void actionPerformed(ActionEvent e) { if (e.getSource() == btnQuit) System.exit(0); int x = OFFSET; int y = OFFSET; Obstacle wall; Crate b; SuitableLocation a; for (int i = 0; i < stage.length(); i++) { char item = stage.charAt(i); if (item == 'n') { Rashidul Islam
  15. 15. y += SPACE; if (this.w < x) { this.w = x; } x = OFFSET; } else if (item == '#') { wall = new Obstacle(x, y); obs.add(wall); x += SPACE; } else if (item == '$') { b = new Crate(x, y); crates.add(b); x += SPACE; } else if (item == '.') { a = new SuitableLocation(x, y); SuitLo.add(a); x += SPACE; } else if (item == '@') { PlayerChar = new PlayerCharacter(x, y); x += SPACE; } else if (item == ' ') { x += SPACE; } } } h = y; public void buildWorld(Graphics g) { g.setColor(new Color(0, 108, 209)); g.fillRect(0, 0, this.getWidth(), this.getHeight()); ArrayList<User> world = new ArrayList<User>(); world.addAll(obs); world.addAll(SuitLo); world.addAll(crates); world.add(PlayerChar); Rashidul Islam
  16. 16. for (int i = 0; i < world.size(); i++) { User item = (User) world.get(i); if ((item instanceof PlayerCharacter) || (item instanceof Crate)) { g.drawImage(item.getImage(), item.x() + 2, item.y() + 2, this); } else { g.drawImage(item.getImage(), item.x(), item.y(), this); } if (solved) { g.setColor(new Color(255,255,255)); g.drawString("The level has been solved!", 25, 20); Font f = new Font("Courier New", Font.BOLD,14); setFont(f); } } } @Override public void paint(Graphics g) { super.paint(g); buildWorld(g); } class TAdapter extends KeyAdapter { @Override public void keyPressed(KeyEvent e) { if (solved) { return; } int key = e.getKeyCode(); Rashidul Islam
  17. 17. if (key == KeyEvent.VK_LEFT) { if (checkWallCollision(PlayerChar, LEFT_COLLISION)) { return; } if (checkBagCollision(LEFT_COLLISION)) { return; } PlayerChar.move(-SPACE, 0); } else if (key == KeyEvent.VK_RIGHT) { if (checkWallCollision(PlayerChar, RIGHT_COLLISION)) { return; } if (checkBagCollision(RIGHT_COLLISION)) { return; } PlayerChar.move(SPACE, 0); } else if (key == KeyEvent.VK_UP) { if (checkWallCollision(PlayerChar, TOP_COLLISION)) { return; } if (checkBagCollision(TOP_COLLISION)) { return; } PlayerChar.move(0, -SPACE); Rashidul Islam
  18. 18. } else if (key == KeyEvent.VK_DOWN) { if (checkWallCollision(PlayerChar, BOTTOM_COLLISION)) { return; } if (checkBagCollision(BOTTOM_COLLISION)) { return; } PlayerChar.move(0, SPACE); } else if (key == KeyEvent.VK_R) { restartStage(); } } } repaint(); private boolean checkWallCollision(User actor, int type) { if (type == LEFT_COLLISION) { for (int i = 0; i < obs.size(); i++) { Obstacle wall = (Obstacle) obs.get(i); if (actor.isLeftCollision(wall)) { return true; } } return false; } else if (type == RIGHT_COLLISION) { for (int i = 0; i < obs.size(); i++) { Obstacle wall = (Obstacle) obs.get(i); if (actor.isRightCollision(wall)) { Rashidul Islam
  19. 19. } return true; } return false; } else if (type == TOP_COLLISION) { for (int i = 0; i < obs.size(); i++) { Obstacle wall = (Obstacle) obs.get(i); if (actor.isTopCollision(wall)) { return true; } } return false; } else if (type == BOTTOM_COLLISION) { for (int i = 0; i < obs.size(); i++) { Obstacle wall = (Obstacle) obs.get(i); if (actor.isBottomCollision(wall)) { return true; } } return false; } } return false; private boolean checkBagCollision(int type) { if (type == LEFT_COLLISION) { for (int i = 0; i < crates.size(); i++) { Crate bag = (Crate) crates.get(i); if (PlayerChar.isLeftCollision(bag)) { for (int j=0; j < crates.size(); j++) { Crate item = (Crate) crates.get(j); Rashidul Islam
  20. 20. if (!bag.equals(item)) { if (bag.isLeftCollision(item)) { return true; } } if (checkWallCollision(bag, LEFT_COLLISION)) { return true; } } } bag.move(-SPACE, 0); isSolved(); } return false; } else if (type == RIGHT_COLLISION) { for (int i = 0; i < crates.size(); i++) { Crate bag = (Crate) crates.get(i); if (PlayerChar.isRightCollision(bag)) { for (int j=0; j < crates.size(); j++) { Crate item = (Crate) crates.get(j); if (!bag.equals(item)) { if (bag.isRightCollision(item)) { return true; } } if (checkWallCollision(bag, RIGHT_COLLISION)) { return true; } } } } bag.move(SPACE, 0); isSolved(); Rashidul Islam
  21. 21. return false; } else if (type == TOP_COLLISION) { for (int i = 0; i < crates.size(); i++) { Crate bag = (Crate) crates.get(i); if (PlayerChar.isTopCollision(bag)) { for (int j = 0; j < crates.size(); j++) { Crate item = (Crate) crates.get(j); if (!bag.equals(item)) { if (bag.isTopCollision(item)) { return true; } } if (checkWallCollision(bag, TOP_COLLISION)) { return true; } } } } bag.move(0, -SPACE); isSolved(); return false; } else if (type == BOTTOM_COLLISION) { for (int i = 0; i < crates.size(); i++) { Crate bag = (Crate) crates.get(i); if (PlayerChar.isBottomCollision(bag)) { for (int j = 0; j < crates.size(); j++) { Crate item = (Crate) crates.get(j); if (!bag.equals(item)) { if (bag.isBottomCollision(item)) { Rashidul Islam
  22. 22. } return true; } if (checkWallCollision(bag, BOTTOM_COLLISION)) { return true; } } } } } } bag.move(0, SPACE); isSolved(); return false; public void isSolved() { int num = crates.size(); int compl = 0; for (int i = 0; i < num; i++) { Crate bag = (Crate) crates.get(i); for (int j = 0; j < num; j++) { SuitableLocation area = (SuitableLocation) SuitLo.get(j); if (bag.x() == area.x() && bag.y() == area.y()) { compl += 1; } } } } if (compl == num) { solved = true; repaint(); } Rashidul Islam
  23. 23. public void restartStage() { } } SuitLo.clear(); crates.clear(); obs.clear(); initWorld(); if (solved) { solved = false; } 1.) Documentation: Constructor Summary Panel() g) Class - Game.java: --------------------------------------------------------------------------- Rashidul Islam
  24. 24. Rashidul Islam
  25. 25. --------------------------------------------------------------------------- 1.) Documentation: Constructor Summary Game() private JButton btn1; private JButton btn2; private JButton btn3; private JButton btn4; private JButton btn5; private JButton btn6; private JButton btn7; --------------------------------------------------------------------------- Task 2: Screen shots: a) Level-1: Fig: starting position Rashidul Islam
  26. 26. Fig: Level Solved b) Level-2: Fig: starting position Rashidul Islam
  27. 27. Fig: level solved b) Level-3: Fig: starting position Rashidul Islam
  28. 28. Fig: level solved c) Level-4: Fig: starting position Rashidul Islam
  29. 29. Fig: level solved d) Level-5: Fig: starting position Rashidul Islam
  30. 30. Fig: starting position with buttons --------------------------------------------------------------------------- Task 3: Class diagrams: a) Class Diagram: i) Class Diagram or Design In UML Using StarUML: Fig: Level 1 Rashidul Islam
  31. 31. Fig: Level One Rashidul Islam
  32. 32. ii) Testing Data By BlueJ: Fig : Testing Data By BlueJ Rashidul Islam
  33. 33. Rashidul Islam
  34. 34. Rashidul Islam

×