Types gleichzeitig und einzeln behandeln

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

ToeB

Betreff: Types gleichzeitig und einzeln behandeln

BeitragFr, Jan 19, 2007 13:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie kann ich types gleichzeitig und einzel behandeln?

Code: [AUSKLAPPEN]

Graphics 800,600,16,1

Global Maus = CreateImage(20,20)
SetBuffer ImageBuffer(Maus)
Line 0,0,5,20
Line 0,0,20,5
Line 5,20,20,5

Global Bank = CreateImage(50, 50)
SetBuffer ImageBuffer(Bank)
Color 200, 10, 10
Rect 1, 1, 50, 150 ,1
Rect 1, 1, 150, 50, 1
Color 255, 255, 255
Rect 1, 1, 150, 20, 1
Rect 1, 1, 20, 150, 1

BB = ImageWidth(Bank)
BH = ImageHeight(Bank)

Type feld
Field x
Field y
End Type

Global b.feld

Const NORMAL = 0
Const     UP = 1
Const   DOWN = 2
Const    HIT = 3

HidePointer()

SetBuffer BackBuffer()

;Schleife hier:


Repeat
If MouseHit(2) Then
b = New feld
b\x = 100
b\y = 100
EndIf
Cls
Rect 50,50,700,500,0
mx = MouseX()
my = MouseY()
If MS = NORMAL
If MouseDown(1) Then MS = HIT
ElseIf MS = HIT
If MouseDown( 1 ) Then MS = DOWN Else MS = UP
ElseIf MS = DOWN
If Not MouseDown( 1 ) Then MS = UP
ElseIf MS = UP
MS = NORMAL
EndIf

For b = Each feld
If MS = HIT
If mx => b\x And mx <= b\x + BB
If my => b\y And my <= b\y + BH
Schieben = True
EndIf
EndIf
ElseIf MS = UP
Schieben = False
EndIf

If Schieben = True Then
b\x = b\x + (mx - Oldmx)
b\y = b\y + (my - Oldmy)
EndIf

If b\x < 50 Then b\x = 50:mx = 50
If b\y < 50 Then b\y = 50:my = 50
If b\x > 700 Then b\x = 700:mx = 700
If b\y > 500 Then b\y = 500:mx = 500


DrawImage Bank,b\x,b\y
DrawImage Maus,mx,my
Next
 

Flip

Oldmx = mx
Oldmy = my

Until KeyHit(1)
End


Wie ihr seht wird immer wenn man die rechte Maus-Taste drückt eine neue "Bank" erstellt (bzw. ein neuer Type...)Wenn ich jetzt darauf klicke und es bewegen möchte,klappt das auch. wenn ich jezt aber 2 erstellt habe, dann bewege ich den 1. auch mit Sad ... Kann mir jemand da helfen?
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!

BladeRunner

Moderator

BeitragFr, Jan 19, 2007 14:01
Antworten mit Zitat
Benutzer-Profile anzeigen
1. Code einrücken.
2. Deinem Type ein ID-Feld übergeben
3. Auf die ID prüfen und nur die passende Bank bewegen.
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

ToeB

BeitragFr, Jan 19, 2007 16:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie mach ich das denn? ich hab echt keine ahnung... Crying or Very sad
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!
 

Dreamora

BeitragFr, Jan 19, 2007 16:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Mittels IF halt das ID Feld aller Types ansehen und wenn es die gewünschte ID hat, entsprechende Operationen darauf ausführen (darin gespeicherte Position ändern oder was auch immer du machen möchtest)

Alternativ kannst du auch Handle und Object nutzen, schau dazu auf www.blitzbasic.com in der blitz manual nach um zu verstehen was die Befehle machen und wie man sie nutzt.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

darth

BeitragFr, Jan 19, 2007 16:59
Antworten mit Zitat
Benutzer-Profile anzeigen
omg -.-
eine id ist eine eindeutige zuweisund, durch die man das objekt erkennt
wir in der schweiz haben eine ID (identitätskarte) durch die kann bestimmt werden: "aaah, das ist der darth"
so... wenn man dieses wissen hat (was jeder kluge kopf haben sollte!) dann kann man das übersetzen.
weisen wir dem type (mit dem man umzugehen wissen sollte) eine id zu. was bedeutet das?
Code: [AUSKLAPPEN]
type fu
 field id
 field alles andere
end type

BOA! man sieht, ein ID feld!
beim erstellen des types wird dem id nun eine nummer (oder ein toller code) zugeordnet. durch das man das type wieder erkennen kann!
jetzt geht man alle types durch
Code: [AUSKLAPPEN]
for f.fu=each fu
next

toll! wenn man jetzt etwas für alle tun will, dann haut man die anweisung da rein!
wenn man will, dass nur ein bestimmtes objekt das tut, sucht man nach dem objekt mit der richtigen ID!
(für faule und langsame nochma:)
Code: [AUSKLAPPEN]
for f.fu=each fu
 if f\id=GESUCHT then
  ;mach was
 endif
next


war das wirklich so schwer?!
Diese Signatur ist leer.

ToeB

BeitragFr, Jan 19, 2007 17:16
Antworten mit Zitat
Benutzer-Profile anzeigen
mir is klar wie man das macht. Nur wie ich jedem eine andere ID zuweise weiß ich nich.Da müsst ich ja 3-Seite-Text schreiben, um jedem eine zuzuweisen... Ich wollte nur wissen wie es auch einfacher geht...
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!

BladeRunner

Moderator

BeitragFr, Jan 19, 2007 18:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Globaler Counter der erhöht wird wann immer eine Instanz erstellt wird.
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

ToeB

BeitragFr, Jan 19, 2007 18:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Jap danke ! Ich hatte auch schon an sowas gedacht, aber hatte keine ahnung wie ...
Code: [AUSKLAPPEN]

Type f
Field x
Field y
Field ID
Field Prüfer
End Type



So oder?

~Edit~

Funtzt auch nich...
Code: [AUSKLAPPEN]

Graphics 800,600,16,2

Global Maus = CreateImage(20,20)
SetBuffer ImageBuffer(Maus)
Line 0,0,5,20
Line 0,0,20,5
Line 5,20,20,5

Global Bank = CreateImage(50, 50)
SetBuffer ImageBuffer(Bank)
Color 200, 10, 10
Rect 1, 1, 50, 150 ,1
Rect 1, 1, 150, 50, 1
Color 255, 255, 255
Rect 1, 1, 150, 20, 1
Rect 1, 1, 20, 150, 1

BB = ImageWidth(Bank)
BH = ImageHeight(Bank)

Type feld
Field x
Field y
Field ID
Field P
End Type

Global b.feld
Global S_Geld = 10000
Global G_Geld = 10000

Const NORMAL = 0
Const     UP = 1
Const   DOWN = 2
Const    HIT = 3

HidePointer()

SetBuffer BackBuffer()

;Schleife hier:
b = New feld
b\x = 750
b\y = 100
b\p = 1
b\ID = b\p


Repeat


Cls
Rect 50,50,700,500,0
mx = MouseX()
my = MouseY()
If MS = NORMAL
If MouseDown(1) Then MS = HIT
ElseIf MS = HIT
If MouseDown( 1 ) Then MS = DOWN Else MS = UP
ElseIf MS = DOWN
If Not MouseDown( 1 ) Then MS = UP
ElseIf MS = UP
MS = NORMAL
EndIf

For b = Each feld
If MS = HIT
If b\ID = 1
If mx => b\x And mx <= b\x + BB
If my => b\y And my <= b\y + BH
Schieben = True
EndIf
EndIf
EndIf
ElseIf MS = UP
If mx => b\x And mx <= b\x + BB
If my => b\y And my <= b\y + BH
S_Geld = S_Geld - 200
b = New feld
b\x = 750
b\y = 100
b\p = b\p + 1
b\ID = b\p
EndIf
EndIf
Schieben = False
EndIf

If Schieben = True Then
b\x = b\x + (mx - Oldmx)
b\y = b\y + (my - Oldmy)
EndIf

If b\x < 50 Then b\x = 50:mx = 50
If b\y < 50 Then b\y = 50:my = 50
If b\x > 700 Then b\x = 700:mx = 700
If b\y > 500 Then b\y = 500:my = 500


DrawImage Bank,b\x,b\y
Next
If MS = HIT
If mx => 0 And mx <= 50
If my => 200 And my <= 250
G_Geld = G_Geld + 1000
S_Geld = S_Geld + 1000
EndIf
If my => 300 And my <= 350
G_Geld = G_Geld - 1000
S_Geld = S_Geld - 1000
EndIf
EndIf
EndIf

If S_Geld < 0 Then
S_Geld = 0
ElseIf S_Geld > 15000
S_Geld = 15000
EndIf

If G_Geld < 0 Then
G_Geld = 0
ElseIf G_Geld > 15000
G_Geld = 15000
ElseIf G_Geld > 15000 And S_Geld < 15000
S_Geld = ((G_Geld - S_Geld) +(G_Geld-S_Geld))
EndIf


DrawImage Maus,mx,my
Text 1,1, "    Geld : "+S_Geld
Text 1,15,"Geliehen : "+G_Geld
Rect 0,200,50,50,0
Rect 0,300,50,50,0

Flip


Oldmx = mx
Oldmy = my

Until KeyHit(1)
End



Crying or Very sad
 

Dreamora

BeitragFr, Jan 19, 2007 18:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie wäre es, wenn du erst über eine Lösung nachdenkst und dann drauf los programmierst?
Da von BRs antwort bis zu deinem Codeposting nur 10min vergingen bezweifel ich SEHR, dass du erst über eine Lösung nachgedacht hast.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

darth

BeitragFr, Jan 19, 2007 18:43
Antworten mit Zitat
Benutzer-Profile anzeigen
...
Code: [AUSKLAPPEN]
global nr

;irgendwas
f.fu=new fu : f\id=nr : nr=nr+1


kann das schwer sein?
Diese Signatur ist leer.

BladeRunner

Moderator

BeitragFr, Jan 19, 2007 18:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Was ist eine Globale ?
Was ist eine Instanz ?
Es mangelt wie immer an Grundlegendem Wissen und an eigenen Gedanken.
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

Gameprogman

BeitragFr, Jan 19, 2007 20:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

for i=0 to was weiß ich...
f.fu=new fu
f\id=i
next


so müsste das doch problemlos funktionieren....
eine ID weißt du dem Objekt genau wie zb. die x oder y Koordinate zu.
dazu muss man nur wissen was ein type ist, und wie man eine Schleife benutzt. Und natürlich muss man etwas nachdenken, woran es bei mir allerdings auch schon manchmal gescheitert ist Confused
www.bandradr.de ! Awesome !

AraneA

BeitragFr, Jan 19, 2007 21:41
Antworten mit Zitat
Benutzer-Profile anzeigen
das geht aber nur solange du alle instanzen auf einmal erstellst....

ToeB

BeitragSa, Jan 20, 2007 21:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey ! Habs gelöst (ich denke es ist angebracht dies zu sagen: Ich habs nich alleine gelöst. Eingeproggt hat mia geholfen Wink )
Code: [AUSKLAPPEN]

Graphics 800,600,16,2

Global Maus = CreateImage(20,20)
SetBuffer ImageBuffer(Maus)
Line 0,0,5,20
Line 0,0,20,5
Line 5,20,20,5


Global Bank = CreateImage(50, 50)
SetBuffer ImageBuffer(Bank)
Color 100,100,100
Rect 0,0,10,50
Rect 0,0,50,10



BB = ImageWidth(Bank)
BH = ImageHeight(Bank)



Type feld
Field x
Field y
Field ID
Field rot
End Type

Global b.feld
Global S_Geld = 10000
Global G_Geld = 10000
Global Bank_Geld = 200


fps# = 50.0
fpsWait# = 1000/fps#

HidePointer()

SetBuffer BackBuffer()

;Schleife hier:
b = New feld
b\x = 780
b\y = 100
b\ID = ID_NR:ID_NR = ID_NR + 1

Color 200,200,200

Repeat

StartT# = MilliSecs()

Cls
Rect 50,50,700,500,0
mx = MouseX()
my = MouseY()



For b = Each feld


If MouseDown(1)
  If mx => b\x And mx <= b\x + BB
    If my => b\y And my <= b\y + BH 
      Schieben = True
      Objekt = b\ID   
    EndIf
  EndIf
EndIf


If Schieben = True Then
  For i.feld = Each feld
    If i\ID = Objekt Then   
      i\x = mx-BB/2
      i\y = my-BH/2
        If MouseHit(2) Then RotateImage Bank,90
    EndIf
  Next

  If Not MouseDown(1)
     b = New feld
    b\x = 800
    b\y = 100
    b\ID = ID_NR:ID_NR = ID_NR + 1

    Schieben = False
  EndIf

EndIf


If b\x < 51 Then b\x = 51
If b\y < 51 Then b\y = 51
If b\x > 699 Then b\x = 699
If b\y > 499 Then b\y = 499



DrawImage Bank,b\x,b\y

Text 100,100,Objekt+". Object ausgewält"


Next


If MouseHit(1)
If mx => 0 And mx <= 50
If my => 200 And my <= 250
G_Geld = G_Geld + 1000
S_Geld = S_Geld + 1000
EndIf
If my => 300 And my <= 350
G_Geld = G_Geld - 1000
S_Geld = S_Geld - 1000
EndIf
EndIf
EndIf

DrawImage Maus,mx,my
Text 1,1, "    Geld : "+S_Geld
Text 1,15,"Geliehen : "+G_Geld
Rect 0,200,50,50,0
Rect 0,300,50,50,0

Flip

SleepTime# = fpsWait#-MilliSecs()+StartT#
If SleepTime# > 2 Then Delay SleepTime#



Until KeyHit(1)
End




Smile
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!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group