Problem mit Code... -=[DRNGEND]=-

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

ChrisAttack

Betreff: Problem mit Code... -=[DRNGEND]=-

BeitragDi, März 02, 2004 11:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe hier ein Problem mit meinem Code.
Könntet ihr euch den mal durchlesen, bitte?
Ich wäre euch sehr dankbar, da ich selbst den Fehler nicht finde.
PS.: Alle dateien sind vorhanden, und im richtigen Verzeichnis.

Code: [AUSKLAPPEN]

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

;Include Dateien
Include "KI.bb"
;

;Bilder laden
Global main = LoadImage("GFX/main.png")
Global ok = LoadImage("GFX/ok.png")
Global nein = LoadImage("GFX/nein.png")
Global rechts = LoadImage("GFX/rechts.png")
Global links = LoadImage("GFX/links.png")
Global pointer = LoadImage("GFX/pointer.png")
;
Dim fighter(1)
fighter(0) = LoadImage("GFX/vorschau_tarnkappe.bmp")
fighter(1) = LoadImage("GFX/vorschau_code_t.bmp")
;
Dim level(0)
level(0) = loadimage("Maps/height_map.bmp")

;Variablen
Global choosen_map=0

;Farbe für Font
Color 255,0,0

;Levelauswahl
.choosen
repeat


x=mousex()
y=mousey()

;Bilder
DrawBlock main,0,0
DrawImage ok,450,500
DrawImage nein,300,500
DrawImage links,10,500
DrawImage rechts,90,500
;
Text 515,550,"(Enter)"
Text 365,550,"(Esc)"
Text 155,550,"(Pfeiltasten)"
;

;Variable choosen wird geändert
If KeyHit(28) Then Goto choosen1
If KeyHit(203) Then choosen_map=choosen_map-1
If KeyHit(205) Then choosen_map=choosen_map+1
If choosen<=0 Then choosen_map=0
If choosen>=0 Then choosen_map=0
;

;Collisionsabfrage pointer,buttons
If ImagesCollide(pointer,x,y,0,ok,450,500,0) And MouseDown(1) Then Goto choosen1
If ImagesCollide(pointer,x,y,0,nein,300,500,0) And MouseDown(1) Then End
If ImagesCollide(pointer,x,y,0,links,10,500,0) And MouseDown(1) Then choosen_map=choosen_map-1
If ImagesCollide(pointer,x,y,0,rechts,90,500,0) And MouseDown(1) Then choosen_map=choosen_map+1
;

;Level_Vorschau
drawimage level(choosen),100,100
;

flip
until keyhit(1)
End








;Flugzeugauswahl
.choosen1
Repeat


x=MouseX()
y=MouseY()

;Bilder
DrawBlock main,0,0
DrawImage ok,450,500
DrawImage nein,300,500
DrawImage links,10,500
DrawImage rechts,90,500
;
Text 515,550,"(Enter)"
Text 365,550,"(Esc)"
Text 155,550,"(Pfeiltasten)"
;


;Variable choosen wird geändert
If KeyHit(28) Then Goto drag
If KeyHit(203) Then choosen=choosen-1
If KeyHit(205) Then choosen=choosen+1
If choosen<=0 Then choosen=0
If choosen>=1 Then choosen=1
;

;Daten für Flieger
;Tarnkappe
If choosen=0 Then
Text 50,50,"Tarnkappe"
Color 255,255,255
Text 50,400,"Speed: |||..   Beweglichkeit: |||..  Kraft: ||||."
Color 255,0,0
EndIf
;
;Code-T
If choosen=1 Then
Text 50,50,"Code-T"
Color 255,255,255
Text 50,400,"Speed: |||||  Beweglichkeit: |||..  Kraft: ||..."
Color 255,0,0
EndIf
;

;Vorschau von Meshs
DrawImage fighter(choosen),100,100
;

;Maus
DrawImage pointer,x,y
;

;Collisionsabfrage pointer,buttons
If ImagesCollide(pointer,x,y,0,ok,450,500,0) And MouseDown(1) Then Goto drag
If ImagesCollide(pointer,x,y,0,nein,300,500,0) And MouseDown(1) Then End
If ImagesCollide(pointer,x,y,0,links,10,500,0) And MouseDown(1) Then choosen=choosen-1
If ImagesCollide(pointer,x,y,0,rechts,90,500,0) And MouseDown(1) Then choosen=choosen+1
;

;Screeenshot
if keydown(59) then savebuffer(Frontbuffer()),"Pictures/shot.bmp"
;

Flip
Until KeyHit(1)
End


;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;Drag;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;

.drag

Graphics3D 1024,768,32,1
SetBuffer BackBuffer()

;Cam
cam = CreateCamera()
PositionEntity cam,0,10,-20
;

;Light
light = CreateLight(2)
PositionEntity light,-5,-50,-5
RotateEntity light,45,0,0
;
light1 = createlight(1)
positionentity light1,50,80,0
;

;Terrain
If choosen_map=0 Then
;Bodenplane
water = LoadTexture("Maps/water.jpg")
ScaleTexture water,20,20
boden = CreatePlane()
PositionEntity boden,0,-1,0
EntityType boden,2
EntityTexture boden,water
;
boden_textur = LoadTexture("Maps/boden.jpg")
map01 = LoadTerrain("Maps/map.bmp")
TerrainDetail map01,4000
ScaleTexture boden_textur,2,2
EntityTexture map01,boden_textur,0,1
PositionEntity map01,0,0,0
ScaleEntity map01,1,50,1
EntityType map01,2
EndIf
;


;Schiff auswählen
If choosen=0 Then
mesh = LoadMesh("Meshs/tarnkappe.3ds")
EndIf
;
If choosen=1 Then
mesh = LoadMesh("Meshs/code_t.3ds")
EndIf
;
;Mesh "gradestellen"
RotateMesh mesh,-90,-90,90
;
entitytype mesh,1
;

PointEntity cam,mesh
EntityParent(cam,mesh)



Repeat



;Steuerung
If KeyDown(17)
   speed#=speed#+.1
ElseIf KeyDown(31)
   speed#=speed#-.1
EndIf
;
If KeyDown(30) And KeyDown(17) Or KeyDown(31)
   TurnEntity mesh,0,1,0
EndIf
;
If KeyDown(32) And KeyDown(17) Or KeyDown(31)
   TurnEntity mesh,0,-1,0
EndIf
;
If KeyDown(30)
   TurnEntity mesh,0,.5,0
ElseIf KeyDown(32)
   TurnEntity mesh,0,-.5,0
EndIf
;
if keydown(200) then moveentity mesh,0,1,0
if keydown(208) then moveentity mesh,0,-1,0
;

;Move Mesh
If speed#>=1 Then speed#=1
If speed#<=-.5 Then speed#=-.5
MoveEntity mesh,0,0,speed#
;

;Schiff kann nicht in Wasser
Collisions 1,2,2,2

;Gegner KI
KI()
;

;Screeenshot
if keydown(59) then savebuffer(Frontbuffer()),"Pictures/shot.bmp"
;

UpdateWorld
RenderWorld
Flip
Until KeyHit(1)


Global Anzahl=10 ;Gegner Anzahl

;Felder
Dim Unit(Anzahl,3)
Dim Unit_Schuss(Anzahl,100,1)
Dim distance#(Anzahl)
;

;Reichweite
Global range#=50
;

;Gegnermodell laden + Startkoordinaten
For I=0 To Anzahl
   Unit(I,0) = LoadMesh("Meshs/tarnkappe.3ds")
   Unit(I,1) = Rnd(300) ;X
   Unit(I,2) = Rnd(300) ;Y
   Unit(I,3) = Rnd(300) ;Z
    PositionEntity Unit(I,0),Unit(I,1),Unit(I,2),Unit(I,3)
Next
;

;Distanz mesh mit Gegnern
For I=0 To Anzahl
distance(I)=EntityDistance(mesh,Unit(J,0))
Next 
;

;Funktion
Function KI()

;Distance überprüfen
For I=0 To Anzahl
If distance#(I) =< range# Then
   Schuss=Schuss+1
   If Schuss=100 Then Schuss=1
   Unit_Schuss(I,Schuss,0)=1
   Unit_Schuss(I,Schuss,1)=Unit(I,3)+10
EndIf
Next
;

;Schiessen
For I=0 To Anzahl
For K=0 To 100
   If Unit_Schuss(I,K,3) > 300 Then Unit_Schuss(I,K,0)=0
   If Unit_Schuss(I,K,0) = 1 Then
      laser = LoadMesh("Meshs/laser.3ds")
      MoveEntity laser,0,0,Unit_Schuss(I,K,1)
      Unit_Schuss(I,K,1) = Unit_Schuss(I,K,1)+10
   EndIf
Next
Next
;

;Gegner bewegen
For I=0 To Anzahl
   MoveEntity Unit(I,0),0,0,3
Next
;

End Function
B3D
MSVC++
DX9SDK
  • Zuletzt bearbeitet von ChrisAttack am Di, März 02, 2004 21:00, insgesamt einmal bearbeitet

Jan_

Ehemaliger Admin

BeitragDi, März 02, 2004 12:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bin mir nicht sicher, aber dieser Code wird nie benutzt, weil er an einer Stelle Steht die nie erreicht wierd, bis zum ende, und dann ist sie Sinnlos!

Der Befehl Debuglog schreibt in den debuglog --> du kannst herausfenden an welcher stelle der Fehler ist (ganz nützlich!)

Code: [AUSKLAPPEN]
Global Anzahl=10 ;Gegner Anzahl

;Felder
Dim Unit(Anzahl,3)
Dim Unit_Schuss(Anzahl,100,1)
Dim distance#(Anzahl)
;

;Reichweite
Global range#=50
;

;Gegnermodell laden + Startkoordinaten
For I=0 To Anzahl
Unit(I,0) = LoadMesh("Meshs/tarnkappe.3ds")
Unit(I,1) = Rnd(300) ;X
Unit(I,2) = Rnd(300) ;Y
Unit(I,3) = Rnd(300) ;Z
PositionEntity Unit(I,0),Unit(I,1),Unit(I,2),Unit(I,3)
Next
;

;Distanz mesh mit Gegnern
For I=0 To Anzahl
distance(I)=EntityDistance(mesh,Unit(J,0))
Next
between angels and insects

ChrisAttack

BeitragDi, März 02, 2004 13:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab ich gemacht, aber in dem teil hier

Code: [AUSKLAPPEN]

;Funktion
Function KI()

;Distance überprüfen
For I=0 To Anzahl
If distance#(I) =< range# Then
   Schuss=Schuss+1
   If Schuss=100 Then Schuss=1
   Unit_Schuss(I,Schuss,0)=1
   Unit_Schuss(I,Schuss,1)=Unit(I,3)+10
EndIf
Next
;

;Schiessen
For I=0 To Anzahl
For K=0 To 100
   If Unit_Schuss(I,K,3) > 300 Then Unit_Schuss(I,K,0)=0
   If Unit_Schuss(I,K,0) = 1 Then
      laser = LoadMesh("Meshs/laser.3ds")
      MoveEntity laser,0,0,Unit_Schuss(I,K,1)
      Unit_Schuss(I,K,1) = Unit_Schuss(I,K,1)+10
   EndIf
Next
Next
;

;Gegner bewegen
For I=0 To Anzahl
   MoveEntity Unit(I,0),0,0,3
Next
;

End Function
;


kommt immer wieder die fehler Meldung

Code: [AUSKLAPPEN]
 Expecting ´)´


Ich finde einfach nicht heraus wo die verdammte Klammer hinkommt. Confused

Helft mir doch bitte!
B3D
MSVC++
DX9SDK

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDi, März 02, 2004 14:02
Antworten mit Zitat
Benutzer-Profile anzeigen
die Fehlermeldung kommt nomalerweise wenn ein Array nicht mit Dim initialisiert ist,
evt. startest du einen include datei und nicht den hauptteil in der die includes stehen
[BB2D | BB3D | BB+]

ChrisAttack

BeitragDi, März 02, 2004 17:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie meinst du das?
B3D
MSVC++
DX9SDK

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDi, März 02, 2004 18:55
Antworten mit Zitat
Benutzer-Profile anzeigen
du versuchst die "KI.bb" zu starten anstatt des hauptteils

oder die DIM Variable (x.y) wurde noch nicht aufgerufen !

Beispiel bei der ganau deine fehlermeldung kommt:
Code: [AUSKLAPPEN]
Unit_Schuss(I,Schuss,0)=1

lass das mal alleine laufen, nur diese 1 zeile

bei welcher variable beschwert sich der compiller überhaupt, bzw Zeile ?
[BB2D | BB3D | BB+]

dominik

BeitragDi, März 02, 2004 19:00
Antworten mit Zitat
Benutzer-Profile anzeigen
ich versteht nix von 3D hab den code auch garnich durchgelesen aber ich fand deinen thread-namen sehr einfallsreich. Wink
 

OJay

BeitragDi, März 02, 2004 19:14
Antworten mit Zitat
Benutzer-Profile anzeigen
der fehler muss in der ki.bb liegen...der oben gepostete code läuft bei mir problemlos an...

ChrisAttack

BeitragDi, März 02, 2004 19:28
Antworten mit Zitat
Benutzer-Profile anzeigen
So, hab jetzt alles in einen code geschrieben.
Nun tritt aber hier ein Fehler auf:

Code: [AUSKLAPPEN]

For I=0 To Anzahl
If distance#(I) =< range# Then
   Schuss=Schuss+1
   If Schuss=100 Then Schuss=1
   Unit_Schuss(I,Schuss,0)=1                    | <=
   Unit_Schuss(I,Schuss,1)=Unit(I,3)+10    |
EndIf
Next


Der compiler vermisst in den gekennzeichneten Zeilen die Klammern.
Wo müssen die hin? Ich hab keine Ahnung Embarassed
B3D
MSVC++
DX9SDK

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMi, März 03, 2004 0:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Poste mal den kompletten Code....!
[BB2D | BB3D | BB+]
 

Dreamora

BeitragMi, März 03, 2004 3:38
Antworten mit Zitat
Benutzer-Profile anzeigen
der Dim für den array muss in dieser datei erfolgen, sonst gehts nichts (bin über das gleiche Problem gestolpert bei einem Codesample fürs errechnen von TerrainSchatten)

sollte der dim in der hauptdatei sein und diese included, reicht das (komischerweise) nicht, scheint als ob es dem compiler aus irgend einem grund nicht passen würde ...

Malice

BeitragMi, März 03, 2004 11:50
Antworten mit Zitat
Benutzer-Profile anzeigen
oder in einer include datei.
ich z.b. habe immer eine var.bb mit dabei wo so ziemlicha lle wichtigen variablen definiert werden.

ChrisAttack

BeitragMi, März 03, 2004 16:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe ja den Code in eine Datei geschrieben.
Läuft beim komplimieren auch super, nur wenn ich jetzt die Function KI() in der hauptschleife ausführe, kommt die fehlermeldung das die Klammern fehlen.
B3D
MSVC++
DX9SDK

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group