mercredi 27 mai 2015

Turm von Hanoi

Halli hallo,

also ich hatte die Aufgabe die Türme von Hanoi in ein GUI umzusetzen. Ich habe die Türme und die Scheiben per Rectangle erstellt. Nun fehlt mir die Animation. Wenn ich eine Scheibe in eine andere Position setzen möchte, kann ich die alte Scheibe, die in einem Array gespeichert ist nicht löschen. Ich weiß, dass ich jedesmal eine neue Grafik zeichnen muss. Ich kann es aber nicht umsetzen und bin halt zurzeit total verwirrt.

Ich würde mich freuen wenn Ihr mir helfen würdet.

Hier ist der Code:

Java Code:

  1. import java.awt.*;
  2.  
  3. import javax.swing.*;
  4.  
  5.  
  6. public class TuermeRunnable extends JPanel implements Runnable{
  7.  
  8. public Thread thread = new Thread(this);
  9. public static int turmLength = 6;
  10. public Rectangle [] tuerme = new Rectangle[turmLength];
  11. public static int turmSpace = 41;
  12. public static int turmWidth = 40;
  13. public static int turmX = 20;
  14.  
  15. TuermeRunnable(){
  16. thread.start();
  17. }
  18.  
  19.  
  20. public void define(int x, int y, int w){
  21. for(int i = 0; i < tuerme.length; i++){
  22. tuerme[i] = new Rectangle(x+((turmX)*i), y-((turmSpace)*i), w-((turmWidth)*i), 40);
  23. }
  24. }
  25.  
  26.  
  27. public void paintComponent(Graphics g){
  28. define(85, 700, 340);
  29.  
  30. //Linien
  31. /* ******************************* */
  32. g.setColor(new Color(255, 100, 20));
  33. g.fillRect(250, 220, 15, 500);
  34. g.setColor(new Color(0, 0, 0));
  35.  
  36. g.setColor(new Color(255, 100, 20));
  37. g.fillRect(855, 220, 15, 500);
  38. g.setColor(new Color(0, 0, 0));
  39.  
  40. g.setColor(new Color(255, 100, 20));
  41. g.fillRect(1500, 220, 15, 500);
  42. g.setColor(new Color(0, 0, 0));
  43. /* ******************************* */
  44.  
  45. //Scheiben
  46. for(int i = 0; i < tuerme.length; i++){
  47. g.setColor(new Color(70, 70, 70));
  48. g.fillRect(tuerme[i].x, tuerme[i].y, tuerme[i].width, tuerme[i].height);
  49. g.setColor(new Color(0, 0, 0));
  50. }
  51. }
  52.  
  53.  
  54. public int moveFrame = 1000, moveSpeed = 0;
  55. public void bewege(char start, char ablage, char ziel, int scheiben)
  56. {
  57. if(moveSpeed >= moveFrame){
  58. moveFrame = 0;
  59. if(scheiben == 1){
  60. //System.out.println("Lege die oberste Scheibe von " + "Turm " + a + " auf Turm " + c + ".");
  61.  
  62. if(Character.toString(ziel).equals("a")){
  63. tuerme[scheiben+4].setLocation(1435, 700);
  64. }
  65.  
  66. if(Character.toString(ziel).equals("b")){
  67. tuerme[scheiben+3].setLocation(768, 700);
  68. }
  69. }else{
  70. bewege(start, ablage, ziel, scheiben-1);
  71. bewege(start, ziel, ablage, 1);
  72. bewege(ziel, start, ablage, scheiben-1);
  73. }
  74. }else{
  75. moveSpeed += 1;
  76. }
  77. }
  78.  
  79. public void run() {
  80. while(true){
  81. repaint();
  82. try{
  83. Thread.sleep(1);
  84. bewege('a', 'b', 'c', turmLength);
  85. }catch(Exception e){}
  86. }
  87. }
  88.  
  89.  
  90.  
  91. }


Turm von Hanoi

0 commentaires:

Enregistrer un commentaire