Type Kontainer irgendwie global machen?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Darthshoot

Betreff: Type Kontainer irgendwie global machen?

BeitragDo, Jun 14, 2007 18:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!

Also ich habe ein Spiel gemacht.. wenn man die Leertaste drückt, wird eine Datei aufgerufen, die einen

Local a.Shoot1 = New Shoot1
a.Shoot1\PosX_Shoot1 = PosX_Player
a.Shoot1\PosY_Shoot1 = PosY_Player

macht. Also der Schuss soll die Playerkoordinaten haben. Diese Datei ist übrigens im main.bb included. Dort ist noch eine Datei included und die beinhaltet eine Prozedur. Diese müsste so aussehen:

if Shoot1Active = 1 then a.Shoot1\PosY_Shoot1 = a.Shoot1\PosY_Shoot1 - 5

aber irgendwie erkennt er den Kontainer nicht! Also er tut praktisch so, als ob ich niemals a.Shoot1 erstellt hätte! Das Problem lässt sich natürlich mit global machen lösen, aber wie nur??

Danke im Voraus.
MfG Darthshoot

Dottakopf

BeitragDo, Jun 14, 2007 18:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Ne der fehler liegt bestimmt wo anders, da soweit ich weis alle types als Global definiert werden.

was macht die datei ??
Zitat:

Also ich habe ein Spiel gemacht.. wenn man die Leertaste drückt, wird eine Datei aufgerufen, die einen

Local a.Shoot1 = New Shoot1
a.Shoot1\PosX_Shoot1 = PosX_Player
a.Shoot1\PosY_Shoot1 = PosY_Player

macht.


zeig vielleicht nochmal etwas code.

mfg Dottakopf
Rechtschreibfehler gelten der allgemeinen Belustigung!

D2006

Administrator

BeitragDo, Jun 14, 2007 19:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Local a.Shoot1 = New Shoot1


Fällt dir da nicht was auf? a ist ja der Type Container, bzw. die Referenz auf den Typeeintrag.

Es ist allerdings sauberer, wenn man jeden Typeeintrag durchgeht, bis man den hat, den mann will. Denn globale Variablen sind so schon zu vermeiden, mit dem Namen "a" sowieso!
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2
 

Darthshoot

BeitragFr, Jun 15, 2007 16:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Oman Leute ich bin total verwirrt und verzweifelt Sad also das ganze sieht jetzt so aus:

(in player.bb sind nur Startkoordinaten, das Bild und WeaponCycle1 = 1)

Code: [AUSKLAPPEN]
; Ultra War by DarthShoot (may this name never dies!)

Graphics 800, 600
SetBuffer BackBuffer()

; Some Playervariables...
Include "player/player.bb"

; Weapon1
Type Shoot1
Field PosX_Shoot1
Field PosY_Shoot1
Field Shoot1Image
End Type

Global Weapon1Image = LoadImage("weapons/Weapon1/weapon1.bmp")
MaskImage Weapon1Image, 255, 0, 255



; Main - Loop
Repeat
Cls

; Control of the Player

; Right
If KeyDown(205) Then PosX_Player = PosX_Player + 3

; Left
If KeyDown(203) Then PosX_Player = PosX_Player - 3

; Up
If KeyDown(200) Then PosY_Player = PosY_Player - 3

; Down
If KeyDown(208) Then PosY_Player = PosY_Player + 3

; Fire
If KeyHit(57) And WeaponCycle = 1 Then

Local a.Shoot1 = New Shoot1
a\PosX_Shoot1 = PosX_Player
a\PosY_Shoot1 = PosY_Player
a\Shoot1Image = Weapon1Image

EndIf

; Check Window collide...
If PosX_Player > 720 Then PosX_Player = PosX_Player - 4
If PosX_Player < 0 Then PosX_Player = PosX_Player + 4
If PosY_Player > 500 Then PosY_Player = PosY_Player - 4
If PosY_Player < 0 Then PosY_Player = PosY_Player + 4

DrawImage PlayerImage, PosX_Player, PosY_Player

; Schuss - Prozess
For a.Shoot1 = Each Shoot1
a\PosY_Shoot1 = a\PosY_Shoot1 - 5
DrawImage a\Shoot1Image, a\PosX_Shoot1, a\PosY_Shoot1
Next

Flip
Until KeyHit(1)


Sry das ich alles poste, aber ich habe im Moment gerade total den Überblick verlohren und ein Blackout und da dachte ich, dass es besser wäre, kurz mal alles zu posten, als zu wenig. Naja das wichtigste ist eigendlich, dass oben ein Type namens Shoot1 deklariert wird und per keyhit 57 soll eins erstellt werden und ganz unten Schuss - Prozess. Wo ist der Fehler? Es ist kein Schuss zu sehen Sad

Danke schonmal

ZaP

BeitragFr, Jun 15, 2007 17:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Nimm doch das Local bei "
Local a.Shoot1 = New Shoot1 " weg...
Starfare: Worklog, Website (download)
 

Darthshoot

BeitragSa, Jun 16, 2007 18:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Geht leider immer noch nicht Sad ich kann zwar fliegen und so, aber es werden keine Schüsse angezeigt wenn ich die Leertaste drücke.

Kernle 32DLL

BeitragSo, Jun 17, 2007 17:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Code ist ein einziges Wirrwarr...
Ich hab ihn mal geordnet...

------------------------------------------------------------------------------

; Ultra War by DarthShoot (may this name never dies!)

Graphics 800, 600, 32, 2
SetBuffer BackBuffer()

; Some Playervariables...
Include "player/player.bb"

; Weapon1
Type Shoot1
Field PosX_Shoot1
Field PosY_Shoot1
;Field Shoot1Image ;brauchst du nicht
End Type

Global Shoot1.Shoot1

Global Weapon1Image = LoadImage("weapons/Weapon1/weapon1.bmp")
MaskImage Weapon1Image, 255, 0, 255



; Main - Loop
Repeat
Cls

; Control of the Player

; Right
If KeyDown(205) Then PosX_Player = PosX_Player + 3

; Left
If KeyDown(203) Then PosX_Player = PosX_Player - 3

; Up
If KeyDown(200) Then PosY_Player = PosY_Player - 3

; Down
If KeyDown(208) Then PosY_Player = PosY_Player + 3

; Fire
If KeyHit(57); And WeaponCycle = 1 Then
;Das "Then" ist total verkehrt. Was du mit
;WeaponCyle meinst weis ich auch nicht...
;zumal es nirgentwo auf 1 oder 0 gesetzt wird...


Shoot1 = New Shoot1
Shoot1 \PosX_Shoot1 = PosX_Player
Shoot1 \PosY_Shoot1 = PosY_Player
;Shoot1\Shoot1Image = Weapon1Image ;brauchst du nicht
EndIf

; Check Window collide...
If PosX_Player > 790 Then PosX_Player = 790
If PosX_Player < 10 Then PosX_Player = 10
If PosY_Player > 590 Then PosY_Player = 590
If PosY_Player < 10 Then PosY_Player = 10


DrawImage PlayerImage, PosX_Player, PosY_Player

; Schuss - Prozess
For Shoot1 = Each Shoot1
Shoot1\PosY_Shoot1 = Shoot1\PosY_Shoot1 - 5

DrawImage Weapon1Image, Shoot1\PosX_Shoot1, Shoot1\PosY_Shoot1
;Du kannst einfach das geladene Bild zeichnen.
;Du musst es nicht für jeden Schuss neu laden...


Next

Flip
Until KeyHit(1)

------------------------------------------------------------------------------

Sollte jetzt funktionieren...

Noch 2 Sachen die mir nebenbei aufgefallen sind...
1) "PosX_Player" und "PosY_Player" sind nicht Global
2) Mach eine Abfrage ob der Schuss aus dem Bild geflogen ist,
und lösche ihn dann ggf. (sonst zeichnest du später 10000 Schüsse
außerhalb des Bildschirms...)

Ich hoffe ich konnte helfen ^^

Grüßle:
Kernle
Mein PC: "Bluelight" - Xtreme Gamer PC [Video]
Meine Projekte: Cube-Wars 2010 [Worklog]
Anerkennungen: 1. Platz BCC #7 , 1. Platz BCC #22 , 3. Platz BAC #89
Ich war dabei: NRW Treff III, IV ; Frankfurter BB Treffen 2009

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group