Hilfe!!

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

S.

Betreff: Hilfe!!

BeitragMi, Jan 06, 2010 22:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallöchen.....
Ich habe hier ein sehr schwerwiegendes Problem und ich hoffe mir kann jemand in den nächsten 2 1/2 stunden helfen.
Und zwar zeige ich unten ein spiel an, dass ich programmieren muss für die Schule. Dabei geht es darum, das Garfield durch das Labyrint läuft, und das Essen bzw. Pooky einsammelt. Jetzt funktionieren leider meine Kollisionsabfragen nicht, dass heißt, die Pizza verschwindet nicht, wenn Garfield sie berührt und der Käse erscheint nirgends...
Bitte bitte, wäre nett, wenn mir schnell jemand antworten könnte:: Code: [AUSKLAPPEN]
Graphics 1020,735;

Labyrinth=LoadImage ("Labyrint.bmp")
MaskImage Labyrinth,0,0,0;


Garfield=LoadImage("garfield.bmp");
ScaleImage Garfield,0.2,0.2;
MaskImage Garfield,255,255,255;

Garfield1=LoadImage("garfieldA.bmp")
ScaleImage Garfield1,0.2,0.2;
MaskImage Garfield1,255,255,255;



Pizza=LoadImage("pizza.bmp");
ScaleImage Pizza,0.2,0.2;
MaskImage Pizza,255,255,255;

Kaese=LoadImage("Kaese.bmp");
ScaleImage Kaese,0.2,0.2;
MaskImage Kaese,255,255,255;

Spaghetti=LoadImage("Spaghetti.bmp");
ScaleImage Spaghetti,0.2,0.2;
MaskImage Spaghetti,255,255,255;

Pooky=LoadImage("Pooky.bmp");
ScaleImage Pooky,0.2,0.2;
MaskImage Pooky,255,255,255;





Anleitung=LoadImage("Anleitung.bmp");



HidePointer


Level=0;



Cover=LoadImage("Cover.bmp");
DrawImage Cover,0,0;
Delay 2500;
Cls;



DrawImage Anleitung,0,0;
WaitKey;
Cls;


a=100;
b=100;
Level=1;
Zaehler=0;
Leben=1;



SetBuffer BackBuffer();
While Level=1;


c=920;
d=50;


aOld=a;
bOld=b;



If KeyDown(205);
a=a+3
k=1;
EndIf;
If KeyDown(203);
a=a-3;
k=0;
EndIf;
If KeyDown (200);
b=b-3
EndIf;
If KeyDown (208);
b=b+3
EndIf;

Cls;


If KeyDown(1) Then End;



DrawImage Labyrinth,0,0;




If k=0
DrawImage Garfield,a,b;
EndIf
If k=1
DrawImage Garfield1,a,b;
EndIf;



If ImagesCollide(Garfield,a,b,0,Labyrinth,0,0,0);
a=aOld
b=bOld
EndIf;


Text 0,0,Zaehler;


DrawImage Pizza,c,d;






If ImagesCollide(Garfield,a,b,0,Pizza,c,d,0);
   c=1234567;
   d=1234567;
   Zaehler=Zaehler+10;
EndIf;

g=460;
h=35;

If Zaehler=10;
   DrawImage Spaghetti,e,f;
EndIf;


If ImagesCollide(Garfield,a,b,0,Spaghetti,e,f,0);
   e=12345678;
   f=12345678;
   Zaehler=Zaehler+10;
   g=370;
   h=35;
EndIf;


If Zaehler=20;
   DrawImage Kaese,i,j,0;
EndIf;   

If ImagesCollide(Garfield,a,b,0,Kaese,i,j,0);
   i=123456789;
   j=123456789;
   Zaehler=Zaehler+10;
   k=123
   l=123
EndIf;   

If Zaeheler=30;
   DrawImage Pooky,k,l,0;
EndIf;

If ImagesCollide(Garfield,a,b,0,Pooky,k,l,0);
   k=7789;
   l=9943;
   Zaehler=Zaehler+10;
EndIf;

Flip;



Wend;



 

Lion

BeitragMi, Jan 06, 2010 22:54
Antworten mit Zitat
Benutzer-Profile anzeigen
du hast auch nirgends eine abfrage eingebaut, ob die pizza angezeigt werden soll...
if pizzaanzeige=1 then
drawimage...
if imagescollide...
[....]
endif
endif

so in dem sinne.

wie kommts eigtl das hier so viele auf einmal für die schule was programmieren müssen o.o
Intel Core 2 Quad 4x2.66 ghz - 4gb ddr2 - nvidia GeForce GTX660 2gb
Intel Atom 1x1.83 ghz - 2gb ddr2 - intel GMA 3150 256mb
AMD A10-5750M 4x2.5 ghz - 8 gb ddr4 - AMD R9 M290x
 

da_poller

BeitragMi, Jan 06, 2010 22:55
Antworten mit Zitat
Benutzer-Profile anzeigen
also zunächstmal solltest du dir angewöhnen codes einzurücken um die lesbarkeit zu erhöhen.

desweiteren wären aussagekräftigere variablennamen(a,b,c etc sind nicht entzifferbar.)

und zum letzteren wäre es durchaus zu überlegen mal sich mit function type und ähnlichem zu befassen.

das was du geschrieben hast istleider gottes unlesbarer spagetticode der obendrein unflexiebel ist.


btw mal was OT: hat eure klasse in informatik grad B3D entdeckt oder ist B3D neuer jugendsport?



edit: ohne die zugehörigen bilder kann das eh niemand genau testen.

Holzchopf

Meisterpacker

BeitragMi, Jan 06, 2010 23:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo S.

Könntest du bitte dem Thema einen passenden Titel geben? Den Titel kannst du ändern, wenn du Eröffnungsbeitrag hier editierst. Hilfe bekommt hier eh jeder angeboten - und komm auch nicht auf die Idee, ihn einfach in "Problem!!" zu ändern Rolling Eyes
Normalerweise kann man im Titel ja (ultra-)kurz zusammenfassen, was das Problem ist, zB Bild verschwindet nicht oder sowas.

mfG
Holzchopf
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

Badudel

BeitragDo, Jan 07, 2010 15:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Zusätzlich zu den anderen Hinweisen noch ein paar Sachen:

1. Du musst in BB KEINE Semikolone ( ; ) nach Befehlen schreiben (das gehört zum C-Syntax).

2. Graphics 1020,735 ist eine krumme Auflösung - benutze lieber 1024,768

3. SkaleImage ist langsam und fehlerhaft. Wenn möglich das Bild einfach in einem Bildbearbeitungsprogramm skalieren und dann benutzen.

4. Du schreibst erst Level=0 und dann ein paar Zeilen später Level=1

5. Schreib bitte nicht den ganzen Code, sondern nur, was wichtig ist.

6. c und d scheinen die Koordinaten der Pizza zu sein. Du willst wahrscheinlich, dass bei einer Kollision die Pizza verschwindet (du zeichnest die Pizza dann außerhalb des Schirms.) Das geht allerdings nie (das ist dein Problem), weil c und d immer am Anfang der Schleife neu gesetzt werden

7. Die Technik mit dem außerhalb des Bildschirm zeichnen ist absolut nicht zu empfehlern (-> Schnelligkeit).
Schreibe anstelle
BlitzBasic: [AUSKLAPPEN]
If malpizza=1 Then DrawImage pizza, c,d

...
If ImagesCollide(... das mit der Pizza) Then malpizza=0


9. Wegen den Spaghettis: Du hast ja auch nie dei Variablen e und f definiert!

10. Bitte benutze einen Timmer per CreateTimer und dann noch Flip 0!

Viel Erfolg, Badudel
Wir werden dem Schwein schon schlachten, auch wenn ihm quiekt.
Zum Teufel mit das Grammatik!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group