ubuntuusers.de

tetris als java-applet

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

leafar

Avatar von leafar

Anmeldungsdatum:
27. April 2010

Beiträge: 12

hat jetzt nicht direkt etwas mit ubuntu zu tun, aber ich hoffe ihr könnt mir trotzdem helfen 😉

wir haben im info-unterricht vor einer weile den auftrag bekommen uns für den rest des jahres mit einem beliebigen slebstgewählten projekt zu beschäftigen

ich hatte die idee tetris nachzuprogrammieren(da wir bisher mit java gearbeitet haben, bot sich das natürlich an), bisher liefs auch ganz gut, aber jetzt haben wir das problem, das wir die tastensteuerung nicht hinbekommen ☹

das grundprinzip hab ich ja verstanden, aber aus irgeneinem grund funktionierts in dem programm nicht so wie es soll ☹ - obwohl inzwischen nicht mal mehr fehlermeldungen komen 😀

momentan seh ich einfach nur die steine nach unten fallen und sich auftstapeln

hinzu kommt noch, dass das applet immer zweimal durchläuft, wobei das jetzt nicht das hauptproblem wäre

hier der code:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import java.awt.*;
import java.applet.Applet;
import java.awt.event.*;
public class tetris extends Applet implements KeyListener{
feld spielfeld;
block dereine;
public void paint(Graphics g){
addKeyListener(this);
spielfeld = new feld();
g.setColor(Color.BLACK);
g.fillRect(0, 0, 1000, 1000);
spielfeld.ausgeben(g);
while(1<2)
{int x = (int)(Math.round(Math.random()*6)+1);//erzeugen eines zufälligen blocks
dereine = new block();
switch(x)
{case 1: dereine = new block1(); break;
case 2: dereine = new block2(); break;
case 3: dereine = new block3(); break;
case 4: dereine = new block4(); break;
case 5: dereine = new block5(); break;
case 6: dereine = new block6(); break;
case 7: dereine = new block7(); break;
default: break;
}
if(!(spielfeld.platzpruefen(dereine)))
break;
while(1<2)//runterfallen der steine
{try{
Thread.sleep(200);}
catch(InterruptedException e)
{e.printStackTrace();}
dereine.runter(spielfeld);
spielfeld.ausgeben(g);
dereine.ausgeben(g);
if(!(spielfeld.platzpruefen(dereine)))
break;
}
}
spielfeld.ausgeben(g);
}
public void keyTyped(KeyEvent e)
{dereine.drehen(spielfeld);// erstmal nur um die tasteneingabe überhaupt zu prüfen
}
public void keyPressed(KeyEvent e)
{
}
public void keyReleased(KeyEvent e)
{
}
}

dazu gehören natürlich noch die spielfeld und block klassen, kann ich gerne noch nachreichen

liegt das an Thread.sleep()?, das war bisher eine vermutung; wenn ja, was kann man da anders machen?

ich hoffe ihr könnt mir helfen, sollte nächsten dienstag fertig sein ^^

mfg leafar

Vain

Avatar von Vain

Anmeldungsdatum:
12. April 2008

Beiträge: 2505

Möchte wirklich nicht pingelig erscheinen und ich schau's mir auch wohl nochmal genauer an (s.u.), aber trotzdem eine Bitte: Achte doch auf Lesbarkeit des Codes. Das da oben ist nicht so besonders gut lesbar und dadurch erschwerst du jedem, der dir helfen möchte/könnte, dieses Vorhaben. ☺ Natürlich kann ich den Quellcode durch indent oder so jagen, aber das sind einfach unnötige Schritte – außerdem erhöht sich ja auch für dich die Übersicht.

Ohne die restlichen Klassen wird man aber nicht so viel tun können, also wäre es gut, wenn du uns die auch zugänglich machen würdest. Ich zumindest würde es gerne mal ausprobieren, um zu sehen, was da eigentlich genau passiert.

(Muss das eigentlich ein Applet sein?)

leafar

(Themenstarter)
Avatar von leafar

Anmeldungsdatum:
27. April 2010

Beiträge: 12

ich hatte das ursprünglich inner schule geschrieben und habs mir dann zum weiteren bearbeiten nach hause geschickt, dabei sind dann leider alle einrückungen verloren gegangen und ich hatte bisher noch nich die lust, die wieder einzufügen, werd aber in zukunft versuchen drauf zu achten 😉

also hier erstma der restliche code(hoffe ich hab beim bearbeiten alles erwischt):

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
class feld extends Applet{
  int breite = 10, hoehe = 20;
  int felder[][] = new int[hoehe][breite]; //erstellen des feldes
  int x = 0, y = 0; //zählvariablen
public void reihencheck() // überprüfen, ob eine reihe voll ist
  {boolean voll = true;
  while(x < hoehe)
    {while(y < breite)
      {if(felder[x][y] == 0){voll = false; break;}
      y++;}
    if(voll) //volle reihe entfernen und reihen runter schieben
      {y = x;
      while(y < (hoehe-1))
        {felder[y] = felder[y+1];
        y++;}
        y = 0;
      while(y < breite) //oberste reihe leeren
        {felder[hoehe-1][y] = 0;
        y++;}
      }
    y = 0; x++; voll = true;}
  x = 0;
  }
public void ausgeben(Graphics g)
  {int x = 0, y = 0;
  while(x < hoehe)
    {while(y < breite)
      {if(felder[x][y] == 0)
      g.setColor(Color.white);
      else
      g.setColor(Color.black);
      g.fillRect((y*10), ((19- x)*10), 10, 10);
      y++;}
  y = 0;x++;}
  }
public void einbauen(block block)
  {if(platzpruefen(block))
    {felder[block.stein1[1]][block.stein1[0]] = 1;
    felder[block.stein2[1]][block.stein2[0]] = 1;
    felder[block.stein3[1]][block.stein3[0]] = 1;
    felder[block.stein4[1]][block.stein4[0]] = 1;
    reihencheck();
    }
  }
public boolean platzpruefen(block block)
  {if((block.stein1[1] < 0) || (block.stein2[1] < 0) || (block.stein3[1] < 0) || (block.stein4[1] < 0))
    return false;
  if((block.stein1[0] < 0) || (block.stein2[0] < 0) || (block.stein3[0] < 0) || (block.stein4[0] < 0))
    return false;
  if((block.stein1[0] > 9) || (block.stein2[0] > 9) || (block.stein3[0] > 9) || (block.stein4[0] > 9))
    return false;
  if((block.stein1[1] > 19) || (block.stein2[1] > 19) || (block.stein3[1] > 19) || (block.stein4[1] > 19))
    return false;
  if((felder[block.stein1[1]][block.stein1[0]] == 0)&&(felder[block.stein2[1]][block.stein2[0]] == 0)&&(felder[block.stein3[1]][block.stein3[0]] == 0)&&(felder[block.stein4[1]][block.stein4[0]] == 0))
    return true;
  else
    return false;
  }
}

class block extends Applet{
  int stein1[] = new int[2]; // koordinaten(x,y)
  int stein2[] = new int[2];
  int stein3[] = new int[2];
  int stein4[] = new int[2];
public void runter(feld feld)
  {stein1[1] = stein1[1]-1;
  stein2[1] = stein2[1]-1;
  stein3[1] = stein3[1]-1;
  stein4[1] = stein4[1]-1;
  if(!(feld.platzpruefen(this)))
    {stein1[1] = stein1[1]+1;
    stein2[1] = stein2[1]+1;
    stein3[1] = stein3[1]+1;
    stein4[1] = stein4[1]+1;
    feld.einbauen(this);
    }
  }
public void links(feld feld)
  {stein1[0] = stein1[0]-1;
  stein2[0] = stein2[0]-1;
  stein3[0] = stein3[0]-1;
  stein4[0] = stein4[0]-1;
  if(!(feld.platzpruefen(this)))
    {this.rechts(feld);}
  }
public void rechts(feld feld)
  {stein1[0] = stein1[0]+1;
  stein2[0] = stein2[0]+1;
  stein3[0] = stein3[0]+1;
  stein4[0] = stein4[0]+1;
  if(!(feld.platzpruefen(this)))
    {this.links(feld);}
  }
public void ausgeben(Graphics g)
  {g.setColor(Color.black);
  g.fillRect((stein1[0]*10), ((19- stein1[1])*10), 10, 10);
  g.fillRect((stein2[0]*10), ((19- stein2[1])*10), 10, 10);
  g.fillRect((stein3[0]*10), ((19- stein3[1])*10), 10, 10);
  g.fillRect((stein4[0]*10), ((19- stein4[1])*10), 10, 10);
  }
public void drehen(feld feld)
  {
  }
}

class block1 extends block{ //lang
block1()
  {stein1[0] = 4; stein1[1] = 19;
  stein2[0] = 5; stein2[1] = 19;
  stein3[0] = 6; stein3[1] = 19;
  stein4[0] = 7; stein4[1] = 19;
  }
public void drehen(feld feld)
  {//stein1[0] = stein1[0]; stein1[1] = stein1[1];
  if(stein1[1] == stein2[1]) //wenn waagerecht
    {stein2[0] = stein2[0]-1; stein2[1] = stein2[1]-1;
    stein3[0] = stein3[0]-2; stein3[1] = stein3[1]-2;
    stein4[0] = stein4[0]-3; stein4[1] = stein4[1]-3;}
  else if(stein1[1] > stein2[1]) //wenn senkrecht
    {stein2[0] = stein2[0]+1; stein2[1] = stein2[1]+1;
    stein3[0] = stein3[0]+2; stein3[1] = stein3[1]+2;
    stein4[0] = stein4[0]+3; stein4[1] = stein4[1]+3;}
  if(!(feld.platzpruefen(this)))
    this.rückdrehen();
  }
public void rückdrehen()
  {//stein1[0] = stein1[0]; stein1[1] = stein1[1];
  if(stein1[1] == stein2[1]) //wenn waagerecht
    {stein2[0] = stein2[0]+1; stein2[1] = stein2[1]+1;
    stein3[0] = stein3[0]+2; stein3[1] = stein3[1]+2;
    stein4[0] = stein4[0]+3; stein4[1] = stein4[1]+3;}
  else if(stein1[1] > stein2[1]) //wenn senkrecht
    {stein2[0] = stein2[0]-1; stein2[1] = stein2[1]-1;
    stein3[0] = stein3[0]-2; stein3[1] = stein3[1]-2;
    stein4[0] = stein4[0]-3; stein4[1] = stein4[1]-3;}
  }
}
class block2 extends block{ //quadrat
block2()
  {stein1[0] = 4; stein1[1] = 19;
  stein2[0] = 5; stein2[1] = 19;
  stein3[0] = 4; stein3[1] = 18;
  stein4[0] = 5; stein4[1] = 18;
  }
public void drehen()
  {
  }
}

class block3 extends block{ // _|_
block3()
  {stein1[0] = 5; stein1[1] = 19;
  stein2[0] = 4; stein2[1] = 18;
  stein3[0] = 5; stein3[1] = 18;
  stein4[0] = 6; stein4[1] = 18;
  }
public void drehen(feld feld)
  {if(stein1[1] > stein3[1])
    {//stein1[0] = stein1[0]; stein1[1] = stein1[1];
    /*stein2[0] = stein2[0];*/ stein2[1] = stein2[1]+2;
    stein3[0] = stein3[0]-1; stein3[1] = stein3[1]+1;
    stein4[0] = stein4[0]-2; /*stein4[1] = stein4[1];*/}
  else if(stein1[0] > stein3[0])
    {//stein1[0] = stein1[0]; stein1[1] = stein1[1];
    stein2[0] = stein2[0]+2; /*stein2[1] = stein2[1];*/
    stein3[0] = stein3[0]+1; stein3[1] = stein3[1]+1;
    /*stein4[0] = stein4[0];*/ stein4[1] = stein4[1]+2;}
  else if(stein1[1] < stein3[1])
    {//stein1[0] = stein1[0]; stein1[1] = stein1[1];
    /*stein2[0] = stein2[0];*/ stein2[1] = stein2[1]-2;
    stein3[0] = stein3[0]+1; stein3[1] = stein3[1]-1;
    stein4[0] = stein4[0]+2; /*stein4[1] = stein4[1];*/}
    else if(stein1[0] < stein3[0])
    {//stein1[0] = stein1[0]; stein1[1] = stein1[1];
    stein2[0] = stein2[0]-2; /*stein2[1] = stein2[1];*/
    stein3[0] = stein3[0]-1; stein3[1] = stein3[1]-1;
    /*stein4[0] = stein4[0];*/ stein4[1] = stein4[1]-2;}
  if(!(feld.platzpruefen(this)))
    this.rückdrehen();
  }
public void rückdrehen()
  {if(stein1[1] > stein3[1])
    {//stein1[0] = stein1[0]; stein1[1] = stein1[1];
    /*stein2[0] = stein2[0];*/ stein2[1] = stein2[1]-2;
    stein3[0] = stein3[0]+1; stein3[1] = stein3[1]-1;
    stein4[0] = stein4[0]-2; /*stein4[1] = stein4[1];*/}
  else if(stein1[0] > stein3[0])
    {//stein1[0] = stein1[0]; stein1[1] = stein1[1];
    stein2[0] = stein2[0]-2; /*stein2[1] = stein2[1];*/
    stein3[0] = stein3[0]-1; stein3[1] = stein3[1]-1;
    /*stein4[0] = stein4[0];*/ stein4[1] = stein4[1]-2;}
  else if(stein1[1] < stein3[1])
    {//stein1[0] = stein1[0]; stein1[1] = stein1[1];
    /*stein2[0] = stein2[0];*/ stein2[1] = stein2[1]+2;
    stein3[0] = stein3[0]-1; stein3[1] = stein3[1]+1;
    stein4[0] = stein4[0]-2; /*stein4[1] = stein4[1];*/}
  else if(stein1[0] < stein3[0])
    {//stein1[0] = stein1[0]; stein1[1] = stein1[1];
    stein2[0] = stein2[0]+2; /*stein2[1] = stein2[1];*/
    stein3[0] = stein3[0]+1; stein3[1] = stein3[1]+1;
    /*stein4[0] = stein4[0];*/ stein4[1] = stein4[1]+2;}
  }
}


class block4 extends block{ //|__
block4()
  {stein1[0] = 4; stein1[1] = 19;
  stein2[0] = 4; stein2[1] = 18;
  stein3[0] = 5; stein3[1] = 18;
  stein4[0] = 6; stein4[1] = 18;
  }
public void drehen(feld feld)
  {if(stein1[1] > stein2[1])
    {//stein1[0] = stein1[0]; stein1[1] = stein1[1];
    stein2[0] = stein2[0]-1; stein2[1] = stein2[1]+1;
    stein3[0] = stein3[0]-2; //stein3[1] = stein3[1];
    stein4[0] = stein4[0]-3; stein4[1] = stein4[1]-1;}
  else if(stein1[0] > stein2[0])
    {//stein1[0] = stein1[0]; stein1[1] = stein1[1];
    stein2[0] = stein2[0]+1; stein2[1] = stein2[1]+1;
    /*stein3[0] = stein3[0];*/ stein3[1] = stein3[1]+2;
    stein4[0] = stein4[0]-1; stein4[1] = stein4[1]+3;}
  else if(stein1[1] < stein2[1])
    {//stein1[0] = stein1[0]; stein1[1] = stein1[1];
    stein2[0] = stein2[0]+1; stein2[1] = stein2[1]-1;
    stein3[0] = stein3[0]+2; //stein3[1] = stein3[1];
    stein4[0] = stein4[0]+3; stein4[1] = stein4[1]+1;}
  else if(stein1[0] < stein2[0])
    {//stein1[0] = stein1[0]; stein1[1] = stein1[1];
    stein2[0] = stein2[0]-1; stein2[1] = stein2[1]-1;
    /*stein3[0] = stein3[0];*/ stein3[1] = stein3[1]-2;
    stein4[0] = stein4[0]+1; stein4[1] = stein4[1]-3;}
  if(!(feld.platzpruefen(this)))
    this.rückdrehen();
  }
public void rückdrehen()
  {if(stein1[1] > stein2[1])
    {//stein1[0] = stein1[0]; stein1[1] = stein1[1];
    stein2[0] = stein2[0]+1; stein2[1] = stein2[1]-1;
    stein3[0] = stein3[0]+2; //stein3[1] = stein3[1];
    stein4[0] = stein4[0]+3; stein4[1] = stein4[1]+1;}
  else if(stein1[0] > stein2[0])
    {//stein1[0] = stein1[0]; stein1[1] = stein1[1];
    stein2[0] = stein2[0]-1; stein2[1] = stein2[1]-1;
    /*stein3[0] = stein3[0];*/ stein3[1] = stein3[1]-2;
    stein4[0] = stein4[0]+1; stein4[1] = stein4[1]-3;}
  else if(stein1[1] < stein2[1])
    {//stein1[0] = stein1[0]; stein1[1] = stein1[1];
    stein2[0] = stein2[0]-1; stein2[1] = stein2[1]+1;
    stein3[0] = stein3[0]-2; //stein3[1] = stein3[1];
    stein4[0] = stein4[0]-3; stein4[1] = stein4[1]-1;}
  else if(stein1[0] < stein2[0])
    {//stein1[0] = stein1[0]; stein1[1] = stein1[1];
    stein2[0] = stein2[0]+1; stein2[1] = stein2[1]+1;
    /*stein3[0] = stein3[0];*/ stein3[1] = stein3[1]+2;
    stein4[0] = stein4[0]-1; stein4[1] = stein4[1]+3;}
  }
}

class block5 extends block{ // __|
block5()
  {stein1[0] = 6; stein1[1] = 19;
  stein2[0] = 4; stein2[1] = 18;
  stein3[0] = 5; stein3[1] = 18;
  stein4[0] = 6; stein4[1] = 18;
  }
public void drehen(feld feld)
  {if(stein2[0] < stein3[0])
    {stein1[0] = stein1[0]-1; stein1[1] = stein1[1]-3;
    //stein2[0] = stein2[0]; stein2[1] = stein2[1];
    stein3[0] = stein3[0]-1; stein3[1] = stein3[1]-1;
    stein4[0] = stein4[0]-2; stein4[1] = stein4[1]-2;}
  else if(stein2[1] > stein3[1])
    {stein1[0] = stein1[0]+1; stein1[1] = stein1[1]-3;
    //stein2[0] = stein2[0]; stein2[1] = stein2[1];
    stein3[0] = stein3[0]-1; stein3[1] = stein3[1]+1;
    stein4[0] = stein4[0]-2; stein4[1] = stein4[1]+2;}
  else if(stein2[0] > stein3[0])
    {stein1[0] = stein1[0]+1; stein1[1] = stein1[1]+3;
    //stein2[0] = stein2[0]; stein2[1] = stein2[1];
    stein3[0] = stein3[0]+1; stein3[1] = stein3[1]+1;
    stein4[0] = stein4[0]+2; stein4[1] = stein4[1]+2;}
  else if(stein2[1] < stein3[1])
    {stein1[0] = stein1[0]-1; stein1[1] = stein1[1]+3;
    //stein2[0] = stein2[0]; stein2[1] = stein2[1];
    stein3[0] = stein3[0]+1; stein3[1] = stein3[1]-1;
    stein4[0] = stein4[0]+2; stein4[1] = stein4[1]-2;}
  if(!(feld.platzpruefen(this)))
    this.rückdrehen();
  }
public void rückdrehen()
  {if(stein2[0] < stein3[0])
    {stein1[0] = stein1[0]+1; stein1[1] = stein1[1]+3;
    //stein2[0] = stein2[0]; stein2[1] = stein2[1];
    stein3[0] = stein3[0]+1; stein3[1] = stein3[1]+1;
    stein4[0] = stein4[0]+2; stein4[1] = stein4[1]+2;}
  else if(stein2[1] > stein3[1])
    {stein1[0] = stein1[0]-1; stein1[1] = stein1[1]+3;
    //stein2[0] = stein2[0]; stein2[1] = stein2[1];
    stein3[0] = stein3[0]+1; stein3[1] = stein3[1]-1;
    stein4[0] = stein4[0]+2; stein4[1] = stein4[1]-2;}
  else if(stein2[0] > stein3[0])
    {stein1[0] = stein1[0]-1; stein1[1] = stein1[1]-3;
    //stein2[0] = stein2[0]; stein2[1] = stein2[1];
    stein3[0] = stein3[0]-1; stein3[1] = stein3[1]-1;
    stein4[0] = stein4[0]-2; stein4[1] = stein4[1]-2;}
  else if(stein2[1] < stein3[1])
    {stein1[0] = stein1[0]+1; stein1[1] = stein1[1]-3;
    //stein2[0] = stein2[0]; stein2[1] = stein2[1];
    stein3[0] = stein3[0]-1; stein3[1] = stein3[1]+1;
    stein4[0] = stein4[0]-2; stein4[1] = stein4[1]+2;}
  }
}

class block6 extends block{ //--__
block6()
  {stein1[0] = 4; stein1[1] = 19;
  stein2[0] = 5; stein2[1] = 19;
  stein3[0] = 5; stein3[1] = 18;
  stein4[0] = 6; stein4[1] = 18;
  }
public void drehen(feld feld)
  {if(stein2[1] > stein3[1])
    {//stein1[0] = stein1[0]; stein1[1] = stein1[1];
    stein2[0] = stein2[0]-1; stein2[1] = stein2[1]-1;
    stein3[0] = stein3[0]-2; //stein3[1] = stein3[1];
    stein4[0] = stein4[0]-3; stein4[1] = stein4[1]-1;}
  else if(stein2[1] == stein3[1])
    {//stein1[0] = stein1[0]; stein1[1] = stein1[1];
    stein2[0] = stein2[0]+1; stein2[1] = stein2[1]+1;
    stein3[0] = stein3[0]+2; //stein3[1] = stein3[1];
    stein4[0] = stein4[0]+3; stein4[1] = stein4[1]+1;}
  if(!(feld.platzpruefen(this)))
    this.rückdrehen();
  }
public void rückdrehen()
  {if(stein2[1] > stein3[1])
    {//stein1[0] = stein1[0]; stein1[1] = stein1[1];
    stein2[0] = stein2[0]+1; stein2[1] = stein2[1]+1;
    stein3[0] = stein3[0]+2; //stein3[1] = stein3[1];
    stein4[0] = stein4[0]+3; stein4[1] = stein4[1]+1;}
  else if(stein2[1] == stein3[1])
    {//stein1[0] = stein1[0]; stein1[1] = stein1[1];
    stein2[0] = stein2[0]-1; stein2[1] = stein2[1]-1;
    stein3[0] = stein3[0]-2; //stein3[1] = stein3[1];
    stein4[0] = stein4[0]-3; stein4[1] = stein4[1]-1;}
  }
}

class block7 extends block{ // __--
block7()
  {stein1[0] = 5; stein1[1] = 19;
  stein2[0] = 6; stein2[1] = 19;
  stein3[0] = 4; stein3[1] = 18;
  stein4[0] = 5; stein4[1] = 18;
  }
public void drehen(feld feld)
  {if(stein1[1] > stein4[1])
    {//stein1[0] = stein1[0]; stein1[1] = stein1[1];
    stein2[0] = stein2[0]-1; stein2[1] = stein2[1]+1;
    stein3[0] = stein3[0]+3; stein3[1] = stein3[1]-1;
    stein4[0] = stein4[0]+1; /*stein4[1] = stein4[1];*/}
  else if(stein2[1] == stein3[1])
    {//stein1[0] = stein1[0]; stein1[1] = stein1[1];
    stein2[0] = stein2[0]+1; stein2[1] = stein2[1]-1;
    stein3[0] = stein3[0]-3; stein3[1] = stein3[1]+1;
    stein4[0] = stein4[0]-1; /*stein4[1] = stein4[1];*/}
  if(!(feld.platzpruefen(this)))
    this.rückdrehen();
  }
public void rückdrehen()
  {if(stein1[1] > stein4[1])
    {//stein1[0] = stein1[0]; stein1[1] = stein1[1];
    stein2[0] = stein2[0]+1; stein2[1] = stein2[1]-1;
    stein3[0] = stein3[0]-3; stein3[1] = stein3[1]+1;
    stein4[0] = stein4[0]-1; /*stein4[1] = stein4[1];*/}
  else if(stein2[1] == stein3[1])
    {//stein1[0] = stein1[0]; stein1[1] = stein1[1];
    stein2[0] = stein2[0]-1; stein2[1] = stein2[1]+1;
    stein3[0] = stein3[0]+3; stein3[1] = stein3[1]-1;
    stein4[0] = stein4[0]+1; /*stein4[1] = stein4[1];*/}
  }
}

nein es muss kein applet sein, aber bei 'normalen' java-programmen weis ich nich genau wie das mit der graphischen oberfläche geht^^

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

Vain schrieb:

Möchte wirklich nicht pingelig erscheinen und ich schau's mir auch wohl nochmal genauer an (s.u.), aber trotzdem eine Bitte: Achte doch auf Lesbarkeit des Codes.

Java sollte man imho mit einer IDE entwickeln. Dazu braucht's unter Eclipse nur ein Shift+Strg+f ☺

Vain

Avatar von Vain

Anmeldungsdatum:
12. April 2008

Beiträge: 2505

@Lysander: Na, da bin ich aber froh, dass die Meinungen in diesem Punkt auseinandergehen dürfen. 😉

@leafar: Täusche ich mich eigentlich oder findet quasi alles in einer langen Schleife innerhalb von paint() statt? Da du diese Schleife nicht verlässt und sie zudem im AWT-EventQueue-Thread läuft, kommt er auch nicht dazu, die Tastatur-Events abzuarbeiten. Der ist quasi nur am Malen und Warten, sonst passiert da nichts. Du müsstest wohl eher deine Schleife dort herausziehen und nur repaint-Events absetzen – das erstbeste, was ich dazu gefunden hab, ist dieses kleine Tutorial. Um rudimentäres Verständnis von Threads kommst du vielleicht auch nicht ganz herum.

(Die vielen verschiedenen Klassen für Blöcke könnte man bestimmt auch irgendwie zusammenfassen, aber das ist ja nicht dein Hauptproblem.)

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

Vain schrieb:

@Lysander: Na, da bin ich aber froh, dass die Meinungen in diesem Punkt auseinandergehen dürfen. 😉

Sicher! Pluralismus ist immer gut ☺

Wäre interessant dazu eine Umfrage zu machen... ich bin mir ziemlich sicher, dass meine Haltung dominieren würde. Das sagt nicht zwangsweise etwas über die Richtigkeit oder allgemeinen Gültigkeit der These aus, jedoch viel über die Praxis Erfahrung.

Bei "discipline & bondage"-Sprachen können IDEs ja vorzüglich ihre Vorteile auspielen; speziell bei Java sieht man das alleine durch dieses ganzen Code-Generierungskram mit bloated XML-Configs. (Durch die Annotationen ist in der Tat einiges handhabbarer geworden) Wenn man nun einem Programmieranfänger von einer IDE abraten würde - was imho absolut sinnvoll ist! -, sollte die Schlussfolgerung lauten: Lerne eine Sprache, die sich ohne IDE beherrschen lässt 😉

leafar

(Themenstarter)
Avatar von leafar

Anmeldungsdatum:
27. April 2010

Beiträge: 12

VIELEN DANK!! es geht jetzt und ich glaub ich hab sogar halbwegs verstanden wieso 😉 jetzt is mir noch aufgefallen, dass beim drehen ein bissel was schief läuft, aber ich denk mal das wird noch^^

also nochma: danke

Antworten |