Pen&Paper map editor in BB

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

DebbieDanger

Betreff: Pen&Paper map editor in BB

BeitragFr, März 25, 2005 17:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo ich habe 2 -hoffentlich- kleine probleme.
hier mein code
BlitzBasic: [AUSKLAPPEN]

Graphics 800,600
SetBuffer BackBuffer()
ClsColor 50,100,255
;;declaration
kachel = LoadImage(\"kachel.jpg\")

zeiger2 = LoadImage(\"zeiger2.bmp\")
chair1 = LoadImage(\"chair.bmp\")
chair2 = LoadImage(\"chair.bmp\")
;;chair x,y
cx=100
cy=100


MaskImage zeiger2,0,0,0

Dim chair(100,2)
For chairnr = 0 To 100
chair(chairnr,0)=100
Next


;;mainpart
While Not KeyHit(1)
Cls

If KeyHit(46) Then createachair=True
If createachair=True Then createchair()


If KeyHit(3) Then grit=True



If grit=True Then

For bgx = 200 To 600 Step 20

For bgy = 0 To 600 Step 20
DrawImage kachel,bgx,bgy
Next

Next

EndIf

If KeyHit(4) Then grit=False



If ImagesCollide (zeiger2,zeigerx,zeigery,0,chair1,cx,cy,0) And MouseDown(1) Then

cx=MouseX() -5
cy=MouseY() -5


EndIf





zeigerx=MouseX()
zeigery=MouseY()

DrawImage zeiger2,zeigerx,zeigery

Flip
Wend
End

Function createchair()
Color 100,20,40
Text 300,300,\"Blub\"
DrawImage chair1,cx,cy

End Function

Also erstens kommt die meldung illegal memory adress, obwohl es in dem ordner alle bilder gibt, und zweitens will ich das man immer wenn man keyhit(46) macht, also c drückt, ein neues bewegbares objekt, (wie chair1) erstellt wird.


Ich hoffe das war einigermassen klar, wenn nicht kann ich die frage auch noch mal umformulieren.

Also danke fürs anschauen.

diGGa

GruppenKaspar

BeitragFr, März 25, 2005 17:58
Antworten mit Zitat
Benutzer-Profile anzeigen
hilft wahrscheinlich nicht aber

If KeyHit(46) Then createachair=True
If createachair=True Then createchair()

warum machst du nich einfach

If KeyHit(46) Then createchair()
Gestern Nacht Schlug der Regen an mein Fenster
Ich ging durch das dunkle Zimmer und
glaubte im Licht der Straßenlampe
Den Geist unseres jahrhunderts auf der
Straße zu sehen
Der uns sagte, daß wir alle am Rande
des Abgrunds stehen.
- Al Steward


Athlon 64 3000+ / Radeon 9600 / 1024mb ddram

Artemis

BeitragFr, März 25, 2005 18:00
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
Graphics 800,600 
SetBuffer BackBuffer()
ClsColor 50,100,255
;;declaration
kachel = LoadImage(\"kachel.jpg\")
zeiger2 = LoadImage(\"zeiger2.bmp\")
chair1 = LoadImage(\"chair.bmp\")
chair2 = LoadImage(\"chair.bmp\")
;;chair x,y
cx=100
cy=100
MaskImage zeiger2,0,0,0
Dim chair(100,2)
For chairnr = 0 To 100
chair(chairnr,0)=100
Next
;;mainpart
While Not KeyHit(1)
Cls
If KeyHit(46) Then createchair() ;<---------------
If KeyHit(3) Then grit = True
If KeyHit(4) Then grit=False
If grit = True Then
For bgx = 200 To 600 Step 20
For bgy = 0 To 600 Step 20
DrawImage kachel,bgx,bgy
Next
Next
EndIf
If ImagesCollide (zeiger2,zeigerx,zeigery,0,chair1,cx,cy,0) And MouseDown(1) Then
cx=MouseX() -5
cy=MouseY() -5
EndIf
zeigerx=MouseX()
zeigery=MouseY()
DrawImage zeiger2,zeigerx,zeigery
Flip
Wend
End

Function createchair()
Color 100,20,40
Text 300,300,\"Blub\"
DrawImage chair1,cx,cy
End Function

Also du musst wahrscheinlich auch ein object erstellen und nicht nur ein blid malen!!
ausserdem "erstellst" du bei deinem programm unendlich chairs!
Da du das einmal auf true stellst und nie wieder auf false!

diGGa

GruppenKaspar

BeitragFr, März 25, 2005 18:02
Antworten mit Zitat
Benutzer-Profile anzeigen
cx=100
cy=100

musst du auf global setzen wenn du sie in einer funktion benutzen willst
Gestern Nacht Schlug der Regen an mein Fenster
Ich ging durch das dunkle Zimmer und
glaubte im Licht der Straßenlampe
Den Geist unseres jahrhunderts auf der
Straße zu sehen
Der uns sagte, daß wir alle am Rande
des Abgrunds stehen.
- Al Steward


Athlon 64 3000+ / Radeon 9600 / 1024mb ddram
 

DebbieDanger

BeitragFr, März 25, 2005 18:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Also du musst wahrscheinlich auch ein object erstellen und nicht nur ein blid malen!!

Wie kann ich denn dein object erstellen?

Ok ich werde die varuabeln globalisieren.

@digga es macht schon einen unterschied:
wenn ich diese verkürzte form benutzt habe war der stuhl immer nur so lange da wie man auch auf "c" gedrückt hat.

danke erstmal, aber bitte helft mir noch ein bischen.

-Debbie


Edit:
also das mit dem globalisieren war gut, habe das bild und cx,cy globalisiert, jetzt funktioniert das schon

nun möchte ich das wenn man den stuhl per drag and drop wegzieht, dass er dann nach 2 sekunden einen neuen stuhl hintut, den man auch verschieben kann.
 

DebbieDanger

BeitragFr, März 25, 2005 19:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke erstmal

hier mein code:
BlitzBasic: [AUSKLAPPEN]

Global cy=100


MaskImage zeiger2,0,0,0

Dim chair(100,2)
For chairnr = 0 To 100
chair(chairnr,0)=100
Next


;;mainpart
While Not KeyHit(1)

Cls ;cls

Color 255,255,255

Text 400,500,(gesagtes)

If KeyHit(3) Then grit=True ;;taste \"2\"

If KeyHit(4) Then grit=False ;;taste \"3\"



If grit=True Then

For bgx = 200 To 600 Step 20

For bgy = 0 To 600 Step 20
DrawImage kachel,bgx,bgy
Next

Next

EndIf




If KeyHit(46) Then createchair()





If ImagesCollide (zeiger2,zeigerx,zeigery,0,chair1,cx,cy,0) And MouseDown(1) Then

cx=MouseX() -5
cy=MouseY() -5


EndIf





zeigerx=MouseX()
zeigery=MouseY()

DrawImage zeiger2,zeigerx,zeigery

Flip

Locate 20,400

If KeyHit(44) Then eingabe(gesagtes)

Wend
End
;;END



;;FUNCTIONS
Function createchair()
Color 100,20,40
Text 300,300,\"Blub\"
DrawImage chair1,cx,cy

End Function

Function eingabe(gesagtes)
FlushKeys
Locate 20,400
Color 255,255,255
gesagtes = Input$(\"Eingabe?\")
Return gesagtes
End Function

leider wird nur solange man c drückt ein stuhl erstellt, und nur ganz kurz.
und wenn man y drückt gibt es eine eingabe
leider wird sie im hauptprogramm nicht angezeigt da steht immer nur eine 0 an besagter stelle.

Bitte hilfe. Embarassed

Alfadur

BeitragFr, März 25, 2005 21:41
Antworten mit Zitat
Benutzer-Profile anzeigen
wie immer : schau dir mal types an. in der onlinehilfe und in diversen tutorials wird alles ausführlich erklärt...


type Tchair
field id
field x
field y
end type

function create_chair(id,x,y)
Vchair.Tchair=new Tchair
Vchair\id=id
Vchair\x=x
Vchair\y=y
end function

function draw_chairs()
for Vchair.Tchair=each Tchair
drawimage img_chair,Vchair\x,Vchair\y
next
end function

if keyhit(46) then create_chair(maxchairs+1,rand(800),rand(600))

mach was draus...
A Cray is the only computer that runs an endless loop in less than four hours.

diGGa

GruppenKaspar

BeitragFr, März 25, 2005 22:37
Antworten mit Zitat
Benutzer-Profile anzeigen
DebbieDanger hat Folgendes geschrieben:


@digga es macht schon einen unterschied:
wenn ich diese verkürzte form benutzt habe war der stuhl immer nur so lange da wie man auch auf "c" gedrückt hat.


naja du könntest die variable ja auch am anfang der funktion abfragen? so hättest du direkt die möglichkeit den stuhl auf wieder löschen zu können
Gestern Nacht Schlug der Regen an mein Fenster
Ich ging durch das dunkle Zimmer und
glaubte im Licht der Straßenlampe
Den Geist unseres jahrhunderts auf der
Straße zu sehen
Der uns sagte, daß wir alle am Rande
des Abgrunds stehen.
- Al Steward


Athlon 64 3000+ / Radeon 9600 / 1024mb ddram

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group