variablenname in einem dim feld

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Zwer99

Betreff: variablenname in einem dim feld

BeitragDi, Jul 11, 2006 20:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Leute

Kann man zum dimensionieren in einem Dimfeld auch einen Variablennamen verwenden?

z.b.

global monster = 0

repeat

ascii = getkey()

if ascii = 32 then monster = monster + 1
dim blabla_x(monster)
dim blabla_y(monster)

for T = 0 to monster
blabla_x(T) = T * 30
blabla_y(T) = T * 20
next

for I = 0 to monster
drawimage monster,blabla_x(I),blabla_y(I)
next

until keydown(1)



das funktioniert bei mir nicht blitz basic zeichnet mein(e) monster immer in die Ecke Crying or Very sad

SpionAtom

BeitragDi, Jul 11, 2006 20:19
Antworten mit Zitat
Benutzer-Profile anzeigen
mach mal die dim-geschichte außerhalb der Schleife.
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080
 

Zwer99

BeitragDi, Jul 11, 2006 20:35
Antworten mit Zitat
Benutzer-Profile anzeigen
das hat funktioniert, aber wenn man dann die monster-variable verändert wird das nicht mehr im dimfeld gespeichert darum ist dann nur ein Monster zu sehen, nicht zwei.

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDi, Jul 11, 2006 20:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Kann man zum dimensionieren in einem Dimfeld auch einen Variablennamen verwenden?
Ja, das geht!

Code: [AUSKLAPPEN]
;Beispiel :
MonsterAnz = 100

Dim Monster_ON (MonsterAnz)
Dim Monster_X (MonsterAnz)
Dim Monster_Y (MonsterAnz)


Mit "Dim Monster(100)" wird festgelegt wie groß das Array wird, das muß nur einmal gemacht werden bevor es benutzt wird!
Bei erneutem Aufruf wird das Array redimensioniert und dabei automatisch gelöscht!

Dein Code müßte da evt. so aussehen...Code: [AUSKLAPPEN]
Global monsteranz = 100
Dim blabla_x(monsteranz)
Dim blabla_y(monsteranz)

Repeat
ascii = GetKey()

If ascii = 32 Then monster = monster + 1

For T = 0 To monster
blabla_x(T) = T * 30
blabla_y(T) = T * 20
Next

For I = 0 To monster
   DrawImage monster,blabla_x(I),blabla_y(I)
Next

Until KeyDown(1)
[BB2D | BB3D | BB+]
 

Zwer99

BeitragDi, Jul 11, 2006 21:09
Antworten mit Zitat
Benutzer-Profile anzeigen
monsteranz ist 100

aber ich will dass nicht gleich 100 monster am bilschirm sind sodern immer wieder ein Monster dazukommt wenn ich die Leertaste drücke, sodass die Variable monsteranz zu 101 wird und dann 101 monster auf den bildschirm gezeichnet werden. aber wenn das dimfeld ganz am anfang steht wird die variable im dimfeld auch nicht mehr verändert und so bleibt die variable auf 100. Verständlich was ich damit ausdrücken will??

falls du das bereits erklärt hast dann bitte ich um verzeihung.
ich hab das irgendwie noch nicht begriffen
  • Zuletzt bearbeitet von Zwer99 am Di, Jul 11, 2006 21:13, insgesamt einmal bearbeitet

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDi, Jul 11, 2006 21:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann kann ich die nur TYPE nahelegen, das ist genau das was du brauchst!
[BB2D | BB3D | BB+]
 

Zwer99

BeitragDi, Jul 11, 2006 21:16
Antworten mit Zitat
Benutzer-Profile anzeigen
ich kenn mich nicht so gut mit tybes aus. kannst du mir bitte ein kleines Beispiel zeigen wie ich mein Monster auf diesen verdammten bildschirm bringe. immer wieder mit der leertaste eins dazu.

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDi, Jul 11, 2006 21:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Da sist einfache rals wie mit einem Array
Code: [AUSKLAPPEN]
Type Monster Field x%,y% End Type ; schablone erstellen
Graphics 800,600,16,2
SetBuffer BackBuffer ()
Repeat
   ascii = GetKey()
   
   If ascii = 32 Then
      A.Monster = New Monster ; ein neues
      a\x = Rand (0,700) ;
      a\y = Rand (0,500)
   End If
   
   For a.Monster = Each monster ; Ale Monster durchgehen
      DrawImage monster,a\x ,a\y
   Next
   Flip
Until KeyDown(1)
[BB2D | BB3D | BB+]
 

Zwer99

BeitragDi, Jul 11, 2006 21:31
Antworten mit Zitat
Benutzer-Profile anzeigen
hey danke ich glaub ich bescheftige mich nun mehr mit tybes Very Happy

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDi, Jul 11, 2006 21:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Types sind für solche Sachen sehr gut geeignet!
Sie sind aber nicht das Allheilmittel, da sie für einige Sachen nicht zu gebrauchen sind!
Das gleiche gilt für Arrays.
Also ist immer abzuwägen was besser ist!
[BB2D | BB3D | BB+]
 

Davok`xarden

BeitragDo, Jul 13, 2006 15:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich weiß nit ob du nacher mit den Ggner noch was anfangen willt bei statischen sachen könnte mans so machen
Code: [AUSKLAPPEN]

Graphics 800,600,16,1
Setbuffer Backbuffer()

SeetRnd Millisecs()

Repeat

If Keyhit(Key_Leertaste) then
           Color Rand(0,255),Rand(0,255),Rand(0,255)
           Rect Rand(0,750),Rand(0,750),Rand(20,50),Rand(20,50),1
End IF

Flip
Until Keyhit(1)
End


So das zeichnet bei druck auf leertaste eine Rechteck kannst das ja durch dein Monster ersetzen.
Mann muss auch noch das "Key_Leertaste" durch den Scancode ersetzen hatte keinne Zeit nach zukucken.
Gott hat euch alle liebt, aber der Rest denk ihr seid [ZENSIERT

Thorsten

BeitragDo, Jul 13, 2006 15:26
Antworten mit Zitat
Benutzer-Profile anzeigen
...dazu muss man nichts sagen oder??
Das wird nie richtig funktionieren...

Bitte lern BlitzBasic bevor du versuchst, jemandem mit deinen Tipps zu helfen.

Ist nicht böse gemeint aber diese Lösung solltest du vielleicht nochmal überdenken Rolling Eyes

cya,
BlindGuy
 

Matthias

Betreff: Warum gleich Types

BeitragDo, Jul 13, 2006 15:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Types zu lernen ist nicht falsch, aber bei so einer simplen aufgabe reichen Dim Felder voll aus.
Code: [AUSKLAPPEN]
Graphics 800,600,32,2:Monster=10

Dim MonsterX(500),MonsterY(500)
;"-----------------------------Zufall Positio0nen------------------"
For Z=0 To Monster:MonsterX(Z)=Rnd(800):MonsterY(Z)=Rnd(600):Next

;"-----------------------------MonsterErzeugen------------------"
ImgMonster=CreateImage(50,50):MidHandle ImgMonster:SetBuffer ImageBuffer(ImgMonster)
Color 255,255,0:Oval 0,0,50,50:SetBuffer BackBuffer()

;"-----------------------------Monsters Anzeigen------------------"
Repeat:

Select KeyHit(57):Case 1:Monster=Monster+1:MonsterX(Monster)=Rnd(800)
MonsterY(Monster)=Rnd(600):End Select
 
For Z=0 To Monster:DrawImage ImgMonster,MonsterX(Z),MonsterY(Z):Next
Flip:AppTitle Monster
Until KeyDown(1)=1:End

Vieleicht reicht dir das so.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group