[bb] types machen mir die hölle heiß
Übersicht

da_pollerBetreff: [bb] types machen mir die hölle heiß |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] ;variablen***************************************************** Global mausx,mausy Global framenummer Global bild ;grafik und bilder*********************************************** Graphics 800,600,16,2 SetBuffer BackBuffer() ClsColor 255,255,255 bild=LoadAnimImage ("bild.bmp",40,40,0,6) MaskImage bild,255,255,255 ;Type schuss------------------------------------ Type schuss Field x Field y Field fortsch Field doe End Type ;hauptschleife************************************************* While Not KeyHit(1) Cls ;schuss----------------------------------------- If MouseHit(1) Then schuss.schuss =New schuss schuss\x=mausx schuss\y=mausy schuss\fortsch=1 schuss\doe=1 EndIf If schuss\doe=1 Color 255,0,0 Oval schuss\x-fortsch,schuss\y-fortsch,fortsch*2,fortsch*2 fortsch=+1 If fortsch>15 Then Delete schuss.schuss EndIf ;smileybild------------------------------------------------------------ bildmalen(framenummer) framenummer=framenummer+1 If framenummer>5 Then framenummer=0 ;mauszeug-------------------------------------------------------------- drawmaus Flip Wend ;funktionen************************************************************** Function drawmaus() mausx=MouseX() mausy=MouseY() Color 0,0,0 Line mausx -10,mausy,mausx+10,mausy Line mausx,mausy -10,mausx,mausy+10 Oval mausx-8,mausy-8,16,16,0 Text 1,1,"mausx: " +mausx Text 1,20,"mausy: " +mausy End Function Function bildmalen(framenummer) DrawImage bild,100,100,framenummer Text 1,40,"framenummer: " +framenummer End Function so dat is jetzt mein code und in der zeile Code: [AUSKLAPPEN] if mousehit(1) then
bekomm ich gleich danach einen fehler: object does not exist |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nach ql:Then muß etwas stehen. Setz mal ql:End da rein und der Fehler sollte weg sein. | ||
da_poller |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
einfach hinter then ein end oder wi? dann wird ja die if ned ganz abgefragt (den inhalt mein ich oder?) | ||
![]() |
d-bug |
![]() Antworten mit Zitat ![]() |
---|---|---|
Im ersten Schleifendurchlauf existiert noch kein Schuss, aber du fragst ihn ab.
Änder mal das: Code: [AUSKLAPPEN] If schuss\doe=1
Color 255,0,0 Oval schuss\x-fortsch,schuss\y-fortsch,fortsch*2,fortsch*2 fortsch=+1 If fortsch>15 Then Delete schuss.schuss EndIf In das: Code: [AUSKLAPPEN] If schuss <> Null
If schuss\doe=1 Color 255,0,0 Oval schuss\x-fortsch,schuss\y-fortsch,fortsch*2,fortsch*2 fortsch=+1 If fortsch>15 Then Delete schuss.schuss EndIf Endif ~Edit~ oops, da hab ich auch Mist gelabert... Pointer heißt schuss und Object heißt auch schuss, also ist schuss.schuss = new schuss doch richtig, nur sehr verwirrend. sorry |
||
- Zuletzt bearbeitet von d-bug am Mi, Dez 06, 2006 19:15, insgesamt 2-mal bearbeitet
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
hectic schrub mist. daran liegt es nicht
prüfe ob schuss ungleich null ist bevor du felder davon abfragst. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
hecticSieger des IS Talentwettbewerb 2006Betreff: Re: [bb] types machen mir die hölle heiß |
![]() Antworten mit Zitat ![]() |
---|---|---|
Da steht nur...
da_poller hat Folgendes geschrieben: Da bin ich von ausgegangen. Wenn hinter der If-Abfrage weiteres kommt was anschliessend mit EndIf beendet wird, so solltest du den gesamten Inhalt mit posten. Dann klappt's auch mit der Fehleranalyse. edit1: Ja, ja, sorry Leute. Bin den Code nur schnell überflogen und der Fehler ist mir als solches nicht gleich ersichtlich gewesen. ![]() |
||
- Zuletzt bearbeitet von hectic am Mi, Dez 06, 2006 19:12, insgesamt einmal bearbeitet
![]() |
d-bug |
![]() Antworten mit Zitat ![]() |
---|---|---|
Lenk nicht ab, hectic. Was du da sagtest war wirklich Mist. Das ql:Then darf da ruhig stehen! Und die Zeile ist durchaus komplett! | ||
- Zuletzt bearbeitet von d-bug am Mi, Dez 06, 2006 19:10, insgesamt einmal bearbeitet
da_poller |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich hab mein ganzen code über dem codefetzen gepostet... | ||
![]() |
d-bug |
![]() Antworten mit Zitat ![]() |
---|---|---|
Komplett korrigiert:
Code: [AUSKLAPPEN] ;variablen***************************************************** Global mausx,mausy Global framenummer Global bild ;grafik und bilder*********************************************** Graphics 800,600,16,2 SetBuffer BackBuffer() ClsColor 255,255,255 bild=LoadAnimImage ("bild.bmp",40,40,0,6) MaskImage bild,255,255,255 ;Type schuss------------------------------------ Type Tschuss ;<--------- böse Falle Zeiger und Objekt gleich zu nennen Field x Field y Field fortsch Field doe End Type ;hauptschleife************************************************* While Not KeyHit(1) Cls ;schuss----------------------------------------- If MouseHit(1) Then schuss.Tschuss =New Tschuss schuss\x=mausx schuss\y=mausy schuss\fortsch=1 schuss\doe=1 EndIf If schuss <> Null If schuss\doe=1 Color 255,0,0 Oval schuss\x-fortsch,schuss\y-fortsch,fortsch*2,fortsch*2 fortsch=+1 If fortsch>15 Then Delete schuss.schuss EndIf EndIf ;smileybild------------------------------------------------------------ bildmalen(framenummer) framenummer=framenummer+1 If framenummer>5 Then framenummer=0 ;mauszeug-------------------------------------------------------------- drawmaus Flip Wend End ; <----------------vorbeugend für die nächste Fehlermeldung ;) ;funktionen************************************************************** Function drawmaus() mausx=MouseX() mausy=MouseY() Color 0,0,0 Line mausx -10,mausy,mausx+10,mausy Line mausx,mausy -10,mausx,mausy+10 Oval mausx-8,mausy-8,16,16,0 Text 1,1,"mausx: " +mausx Text 1,20,"mausy: " +mausy End Function Function bildmalen(framenummer) DrawImage bild,100,100,framenummer Text 1,40,"framenummer: " +framenummer End Function |
||
da_poller |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
jeah haut geil hin ez muss i nur no rausfinden warum i nur einen schuss am screen ham kann und warum der schuss ned größer wird.. kannst du mir zeilen sagen wo ich ansetzen kann (will fehler selber finden ^^) | ||
![]() |
d-bug |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] fortsch=+1
soll wohl vergrößern, geht so aber nicht. So setzt du fortsch immer wieder auf 1 Außerdem ist fortsch ein Field im Type TSchuss... Da ist auch noch der Wurm drin. Den darfst du aber selber suchen ![]() |
||
da_poller |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ups überbleibsel aus c++ kack hab den fehler doch weiter unten auch behoben und da hab ichs ned peilt^^ | ||
da_poller |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
wenn ich jetzt mehrere schuüsse auch zeitgleich am screen haben will hab ich mir das so gedacht:
Code: [AUSKLAPPEN] ;variablen***************************************************** Global mausx,mausy Global framenummer Global bild ;grafik und bilder*********************************************** Graphics 800,600,16,1 SetBuffer BackBuffer() ClsColor 255,255,255 bild=LoadAnimImage ("bild.bmp",40,40,0,6) MaskImage bild,255,255,255 ;Type schuss------------------------------------ Type Tschuss Field x Field y Field fortsch Field doe End Type ;hauptschleife************************************************* While Not KeyHit(1) Cls ;schuss----------------------------------------- If MouseHit(1) Then schuss.Tschuss =New Tschuss schuss\x=mausx schuss\y=mausy schuss\fortsch=1 schuss\doe=1 EndIf If schuss<>Null for schuss.Tschuss EACH T.schuss ;das ist jetrzt neu hier!!!!!!!!!!!!!!!!!!!!!!!!!!!! If schuss\doe=1 Color 255,0,0 Oval schuss\x-schuss\fortsch,schuss\y-schuss\fortsch,schuss\fortsch*2,schuss\fortsch*2 schuss\fortsch=schuss\fortsch+1 If schuss\fortsch>15 Then Delete schuss.Tschuss EndIf next;und das !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! EndIf ;smileybild------------------------------------------------------------ bildmalen(framenummer) framenummer=framenummer+1 If framenummer>5 Then framenummer=0 ;mauszeug-------------------------------------------------------------- drawmaus Flip Wend End ;funktionen************************************************************** Function drawmaus() mausx=MouseX() mausy=MouseY() Color 0,0,0 Line mausx -10,mausy,mausx+10,mausy Line mausx,mausy -10,mausx,mausy+10 Oval mausx-8,mausy-8,16,16,0 Text 1,1,"mausx: " +mausx Text 1,20,"mausy: " +mausy End Function Function bildmalen(framenummer) DrawImage bild,100,100,framenummer Text 1,40,"framenummer: " +framenummer End Function aber irgendwie haut das nicht hin. ist da nur die schleife falsch positioniert oder der ansatz gleich ganz gagga? |
||
![]() |
d-bug |
![]() Antworten mit Zitat ![]() |
---|---|---|
Fast!
Code: [AUSKLAPPEN] For schuss.Tschuss = Each Tschuss ;das ist jetrzt neu hier!!!!!!!!!!!!!!!!!!!!!!!!!!!!
If schuss\doe=1 Color 255,0,0 Oval schuss\x-schuss\fortsch,schuss\y-schuss\fortsch,schuss\fortsch*2,schuss\fortsch*2 schuss\fortsch=schuss\fortsch+1 If schuss\fortsch>150 Then Delete schuss.Tschuss EndIf Next;und das !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! mach mal aus der 15 ein 150 oder so, der Schuss ist zu schnell wieder weg, deswegen sieht es so aus, als ob nur 1 Schuss gezeichnet wird. Die Abfrage If schuss <> Null brauchst du jetzt nicht mehr, weil BB jetzt nur Noch bestehende Instanzen abfragt (das macht Each) |
||
da_poller |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] ;variablen******************************************************* Global mausx,mausy Global framenummer Global bild Global bild2 Global bild3 Global gegnererschaffen ;grafik und bilder*********************************************** Graphics 800,600,16,2 SetBuffer BackBuffer() ClsColor 255,255,255 bild3=LoadAnimImage("bild3.bmp",40,40,0,2) MaskImage bild3,255,255,255 MidHandle bild3 bild2=LoadAnimImage("bild2.bmp",120,40,0,2) MaskImage bild2,255,255,255 bild=LoadAnimImage ("bild.bmp",40,40,0,6) MaskImage bild,255,255,255 ;type gegner------------------------------------ Type Tgegner Field x Field y Field sterb End Type ;Type schuss------------------------------------ Type Tschuss Field x Field y Field fortsch Field doe End Type ;hauptschleife*********************************************************** While Not KeyHit(1) Cls ;buttonbild--------------------------------------------- If ImageRectCollide (bild2,500,400,0,mausx-1,mausy-1,2,2) DrawImage bild2,500,400,1 If MouseHit(1) Then gegnererschaffen=1 EndIf Else DrawImage bild2,500,400,0 EndIf ;gegner--------------------------------------- If gegnererschaffen=1 Then gegner.Tgegner=New Tgegner gegner\x=Rnd(20,780) gegner\y=Rnd(20,580) gegner\sterb=0 gegnererschaffen=0 EndIf For gegner.Tgegner=Each Tgegner If Not ImagesCollide(bild2,500,400,0,bild3,gegner\x,gegner\y,0) Then DrawImage bild3,gegner\x,gegner\y,0 Else Delete gegner.Tgegner EndIf Next ;smileybild------------------------------------------------------------ bildmalen(framenummer) framenummer=framenummer+1 If framenummer>5 Then framenummer=0 ;schuss---------------------------------------------------------------- If MouseHit(1) Then schuss.Tschuss =New Tschuss schuss\x=mausx schuss\y=mausy schuss\fortsch=1 schuss\doe=1 EndIf For schuss.Tschuss =Each Tschuss If schuss\doe=1 Color 255,0,0 Oval schuss\x-schuss\fortsch,schuss\y-schuss\fortsch,schuss\fortsch*2,schuss\fortsch*2 schuss\fortsch=schuss\fortsch+1 If schuss\fortsch>20 Then Delete schuss.Tschuss EndIf Next ;mauszeug-------------------------------------------------------------- drawmaus Flip Wend End ;funktionen************************************************************** Function drawmaus() mausx=MouseX() mausy=MouseY() Color 0,0,0 Line mausx -10,mausy,mausx+10,mausy Line mausx,mausy -10,mausx,mausy+10 Oval mausx-8,mausy-8,16,16,0 Text 1,1,"mausx: " +mausx Text 1,20,"mausy: " +mausy End Function Function bildmalen(framenummer) DrawImage bild,100,100,framenummer Text 1,40,"framenummer: " +framenummer End Function wenn ich das so laufenlass und mit da maus auf bild2 klick dann bekomm ich manchmal den schuss gezeichnet und manchmal nicht... ich brauch keine totallösung nur ne stelle im code wo ich suchen anfangen kann (bin für jeden tipp dankbar) Ps: hab ma dacht ich mach ma in meinem thread weiter statt nen neuen zu machen is das richtig? |
||
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
jap...sollte auch so sein^^ | ||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Klassischer Fehler: Du hast mehrfach in deinem Code ql:mousehit drin. Das löscht aber bei jedem Aufruf den Klickpuffer. Speicher einmal zu Beginn deiner Hauptschleife den wert ab (mh = mousehit(1)) und frag danach immer nur noch mh ab. | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
da_poller |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
klingt logisch danke für den tipp!! werd mcih gleich mal drann machen..
edit: gesagt getan geht ja gleich um einiges besser... thx |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group