variablenname in einem dim feld
Übersicht

Zwer99Betreff: variablenname in einem dim feld |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() |
||
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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. | ||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dann kann ich die nur TYPE nahelegen, das ist genau das was du brauchst! | ||
[BB2D | BB3D | BB+]
|
Zwer99 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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. | ||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hey danke ich glaub ich bescheftige mich nun mehr mit tybes ![]() |
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
...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 ![]() cya, BlindGuy |
||
MatthiasBetreff: Warum gleich Types |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group