drawimage unter einem type ???

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

[Ko5MoS]

Betreff: drawimage unter einem type ???

BeitragFr, Okt 19, 2007 2:31
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo alle zusammen!!
kann ich ein image als type darstellen???
bei mir klappt das irgendwie nicht....


Code: [AUSKLAPPEN]

Function gegner_1()
timer1=timer1+1
If timer1 >= 200 Then
timer1=0
DrawImage info\grafik1,info\geg1_x,info\geg1_y ; hier wird immer gesagt variable must be a type

Flip
End If
End Function


der type sieht ungefähr so aus ::
Code: [AUSKLAPPEN]

Type gegner1
Field geg1_x
Field geg1_y
Field geg1_speed
Field grafik1
End Type



wer kann mir bitte sagen wie das geht ...was hab ich falsch gemacht
Ich tippe schneller als ich denken kann und wenn ich auf ENTER drücke ist alles wieder weg ...
 

Dreamora

BeitragFr, Okt 19, 2007 4:24
Antworten mit Zitat
Benutzer-Profile anzeigen
1. Benutz die Suche. Das Problem gabs erst vor 3 Tagen
2. info existiert auch nicht in der Funktion, da du es nicht übergeben hast, also kannst du nicht darauf zugreifen, dass führt dann dazu dass er dir sagt das es keine Type Entity sei.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

The_Nici

BeitragFr, Okt 19, 2007 11:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Global anschauen. Vielleicht merkst dus dann.
 

Dreamora

BeitragFr, Okt 19, 2007 12:04
Antworten mit Zitat
Benutzer-Profile anzeigen
das ist hoffentlich nicht den Ernst?!

Der korrekt weg ist den Type an die Funktion zu übergeben, sicher NICHT einfach jeden mist global zu machen.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

The_Nici

BeitragFr, Okt 19, 2007 13:41
Antworten mit Zitat
Benutzer-Profile anzeigen
shit stimmt sorry xD

[Ko5MoS]

BeitragFr, Okt 19, 2007 20:30
Antworten mit Zitat
Benutzer-Profile anzeigen
ja wie übergeb ich einen type an eine function??
ich arbeite mich ja gerade durch die online hilfe! habe auch den andern beitrag schon gelesen... hilft bei mir aber nich viel hab ich das gefühl Wink
vielleicht jemand mit erinem konkreten beispiel wie ich ein bild und ein tpye zusammen unter einen hut kriege, wiegesagt es kommt immer die fehlermeldung" variable must be a type "
wenn ich die lösung für mein problem gefunden habe werd ich es posten, ansonsten bin ich über jede hilfe dankbar
Ich tippe schneller als ich denken kann und wenn ich auf ENTER drücke ist alles wieder weg ...
 

Dreamora

BeitragFr, Okt 19, 2007 20:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Indem du den Handle zum Bild in einem Int Field im Type speicherst und danach dieses Field nutzt beim Zeichenbefehl.

Das ist kein Problem, aber du musst zwangsweise auch einen gültigen Type haben und den hat die Funktion oben nicht.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

[Ko5MoS]

BeitragDi, Okt 23, 2007 2:17
Antworten mit Zitat
Benutzer-Profile anzeigen
yo hab das jetzt so halbwegs hingekriegt.. danke erstmal !!

NUR NOCH EINE FRAGE: die bilder laufen erst sauber und fangen dan später immer mehr an zu ruckeln!! was ist da los wie kann ich das sauber hin kriegen ????
ich poste erstmal mein type test programm^^
hier is es falls jemand was dazu sagen will bitte sehr ...
Code: [AUSKLAPPEN]

Graphics 640,480,16,2

Global py,px
gegner_jpg=LoadImage("bild.jpg")
SeedRnd MilliSecs()

Type gegner_1
Field x
Field y
Field grafik
Field speed
End Type

Type player
Field xx
Field yy
Field hp
Field grafik_player
End Type

Repeat
SetBuffer BackBuffer()
For t = 1 To 3
gegner.gegner_1=New gegner_1
gegner\x=640
gegner\y=Rand(1,480)
gegner\speed=Rand(4,10)
gegner\grafik=gegner_jpg
Next

For t=1 To 1
player.player=New player
player\xx=40+px
player\yy=230+py
player\grafik_player=gegner_jpg
Next

bewegung()

For player.player=Each player
Cls
DrawImage player\grafik_player,player\xx,player\yy
Next

gegner.gegner_1=First gegner_1
gegner\x=gegner\x-gegner\speed
DrawImage gegner\grafik,gegner\x,gegner\y
If gegner\x <= -40 Then
Delete gegner.gegner_1
EndIf

gegner=After gegner
gegner\x=gegner\x-gegner\speed
DrawImage gegner\grafik,gegner\x,gegner\y
If gegner\x <= -40 Then
Delete gegner.gegner_1
EndIf

gegner=After gegner
gegner\x=gegner\x-gegner\speed
DrawImage gegner\grafik,gegner\x,gegner\y
If gegner\x <= -40 Then
Delete gegner.gegner_1
EndIf

Flip

Until KeyHit(1)

WaitKey

End

Function bewegung()
If KeyHit(200) Then
py=-10+py
ElseIf KeyHit(208) Then
py=10+py
ElseIf KeyHit(203) Then
px=-10+px
ElseIf KeyHit(205) Then
px=10+px
EndIf
End Function
Ich tippe schneller als ich denken kann und wenn ich auf ENTER drücke ist alles wieder weg ...
 

Lador

BeitragDi, Okt 23, 2007 15:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, schon mal aufgefallen, dass du den Spieler jeden Schleifendurchlauf neu erzeugst?...

MFG Lador

The_Nici

BeitragDi, Okt 23, 2007 17:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Und den/die Gegner auch.
Dazu würde ich bei Bewegung() keydown() benutzen, sonst darf man auf der taste rumhacken. :/

[Ko5MoS]

BeitragMi, Okt 24, 2007 1:17
Antworten mit Zitat
Benutzer-Profile anzeigen
ja der tip mit keydown war schon mal sehr hilfreich, danke!!!
aber wie mach ich das sie nicht immer neu erzeugt werden, wenn ich zb:

Code: [AUSKLAPPEN]

For t = 1 To 3
gegner.gegner_1=New gegner_1
gegner\x=640
gegner\y=Rand(1,480)
gegner\speed=Rand(4,10)
gegner\grafik=gegner_jpg
Next

For t=1 To 1
player.player=New player
player\xx=40+px
player\yy=230+py
player\grafik_player=gegner_jpg
Next

vor reapeat kopiere, kommt die fehlermeldung nach einem durchlauf image does not exist

welchen befehl soll ich verwenden ??each statt new??
Ich tippe schneller als ich denken kann und wenn ich auf ENTER drücke ist alles wieder weg ...
 

Lador

BeitragMi, Okt 24, 2007 14:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Englisch: "Image does not exist" heißt doch auf Deutsch "Bild existiert nicht". Also hast du wahrscheinlich vergessen, dein Bild "gegner_jpg" zu laden, oder ihm einen anderen Namen gegeben (was so ziemlich aufs selbe rauskommt, da die Bildkennung "gegner_jpg" nicht existiert). Oder aber du hast das Bild "bild.jpg" nicht auf deinem PC/in dem Ordner, wo der Quellcode liegt.
Und, Nici, das mit den Gegner stimmt nicht: er löscht sie wieder. Und wenn er die Zeile vor die Schleife macht, kommt wahrscheinlich nach 3 Gegnern ein "Object does not exist" (selbst geprüft, aber hatte keine Probleme mit dem Bild), weil die Gegner gelöscht werden, aber nicht neu erstellt.
Ich hab das ganze jetzt mal verbessert, du brauchst auch keine For i = 1 To 1 Schleife. Also bei dem Player brauchst du keine.

Code: [AUSKLAPPEN]
Graphics 640,480,16,2

Global py,px
gegner_jpg=LoadImage("bild.jpg")
SeedRnd MilliSecs()

Type gegner_1
Field x
Field y
Field grafik
Field speed
End Type

Type player
Field xx
Field yy
Field hp
Field grafik_player
End Type

player.player=New player
player\xx=40+px
player\yy=230+py
player\grafik_player=gegner_jpg

For t = 1 To 3
gegner.gegner_1=New gegner_1
gegner\x=640
gegner\y=Rand(1,480)
gegner\speed=Rand(4,10)
gegner\grafik=gegner_jpg
Next


Repeat
SetBuffer BackBuffer()



bewegung()

Cls
DrawImage player\grafik_player,player\xx,player\yy

gegner.gegner_1=First gegner_1
gegner\x=gegner\x-gegner\speed
DrawImage gegner\grafik,gegner\x,gegner\y
If gegner\x <= -40 Then
Delete gegner.gegner_1
EndIf

gegner=After gegner
gegner\x=gegner\x-gegner\speed
DrawImage gegner\grafik,gegner\x,gegner\y
If gegner\x <= -40 Then
Delete gegner.gegner_1
EndIf

gegner=After gegner
gegner\x=gegner\x-gegner\speed
DrawImage gegner\grafik,gegner\x,gegner\y
If gegner\x <= -40 Then
Delete gegner.gegner_1
EndIf

Flip

Until KeyHit(1)

WaitKey

End

Function bewegung()
If KeyHit(200) Then
py=-10+py
ElseIf KeyHit(208) Then
py=10+py
ElseIf KeyHit(203) Then
px=-10+px
ElseIf KeyHit(205) Then
px=10+px
EndIf
End Function


MFG Lador

[Ko5MoS]

BeitragMi, Okt 24, 2007 16:54
Antworten mit Zitat
Benutzer-Profile anzeigen
ops hab ich image geschrieben Wink
me big noob *schäm*

"object does not exist"

ist schon richtig.

aufjedenfall danke ich guck mir das erstmal mal an.
Ich tippe schneller als ich denken kann und wenn ich auf ENTER drücke ist alles wieder weg ...

[Ko5MoS]

BeitragMi, Okt 24, 2007 17:03
Antworten mit Zitat
Benutzer-Profile anzeigen
sooooooooooo ich habs endlich geschafft Wink
ich hab die for next schleifen wieder in repeat reingenommen.
und jetzt läufts auch bei mir ruckel frei!! DANKE !!!!

nach dem ich die unnötigen 1 to 1 und for player = new player schleife entfernt habe BIG THX,
Hier mal der fertige code:
Code: [AUSKLAPPEN]

Graphics 640,480,16,2

Global py,px,gegner.gegner_1,player.player
gegner_jpg=LoadImage("bild.jpg")
SeedRnd MilliSecs()

Type gegner_1
Field x
Field y
Field grafik
Field speed
End Type

Type player
Field xx
Field yy
Field hp
Field grafik_player
End Type


Repeat
SetBuffer BackBuffer()

bewegung()

player.player=New player
player\xx=40+px
player\yy=230+py
player\grafik_player=gegner_jpg

For t = 1 To 3
gegner.gegner_1=New gegner_1
gegner\x=640
gegner\y=Rand(1,480)
gegner\speed=Rand(4,10)
gegner\grafik=gegner_jpg
Next

Cls

DrawImage player\grafik_player,player\xx,player\yy

gegner.gegner_1=First gegner_1
gegner\x=gegner\x-gegner\speed
DrawImage gegner\grafik,gegner\x,gegner\y
If gegner\x < -40 Then Delete gegner.gegner_1

gegner=After gegner
gegner\x=gegner\x-gegner\speed
DrawImage gegner\grafik,gegner\x,gegner\y
If gegner\x < -40 Then Delete gegner.gegner_1

gegner=After gegner
gegner\x=gegner\x-gegner\speed
DrawImage gegner\grafik,gegner\x,gegner\y
If gegner\x < -40 Then Delete gegner.gegner_1

Flip
Until KeyHit(1)

WaitKey

End

Function bewegung()
If KeyDown(200) Then
py=-10+py
ElseIf KeyDown(208) Then
py=10+py
ElseIf KeyDown(203) Then
px=-10+px
ElseIf KeyDown(205) Then
px=10+px
EndIf
End Function
Ich tippe schneller als ich denken kann und wenn ich auf ENTER drücke ist alles wieder weg ...

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group