fehler? duplicate variable name

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Schnuff

Betreff: fehler? duplicate variable name

BeitragSa, März 18, 2006 23:53
Antworten mit Zitat
Benutzer-Profile anzeigen
ich habe den fehler: "duplicate variable name" kann aber keinen Fehler finden, habe zum letzten lauffähigen script zurück gegridden, funktioniert auch nicht Evil or Very Mad wo ist der Fehler?

Fehlerzeile: Global Bonie.Bon,Last_bonus_Time; bonus Variable

Code: [AUSKLAPPEN]

;1
If Mid(CurrentDir(),4,1)<>"1" Then ng=StartNetGame() Else ng=HostNetGame("Spiel")

If ng=0 Then RuntimeError"Fehler ist aufgetreten:"+Chr(13)+" es konnte nicht eingellogt werden!"; wennkein spiel gestartet werden konnte

Net_P=CreateNetPlayer("Spieler"+ng)
If ng=2 Then
   Print"Warte auf mitspieler!"
   AppTitle"Host"
   Repeat
      ;If RecvNetMsg() Then  Exit
   Until RecvNetMsg()
   Cls
Else
   AppTitle"Client"
EndIf

Include"Spiel.bb"

End

Type Bon
   Field X,Y
   Field art; was ist drin
   Field weg; mit vievielen Millisecs soll es verschwinden
   Field hide
End Type

Function New_Bon(X,Y,Time=-1,art=0,hide=0)
   If Time=-1 Then time=MilliSecs()+5000
   If art=0 Then art=Rand(1,Max_bon)
   hide=(hide>=1)
   
   Bonie.Bon=New Bon
   Bonie\X=X
   Bonie\Y=Y
   Bonie\art=art
   Bonie\weg=Time
   Bonie\hide=hide
   
   ;SendNetMsg(3,Bonie.bon,Net_P)
   Last_bonus_Time=MilliSecs()+Rand(9000,11000)
   
End Function

Function Akt_Bon(img,X,Y,sicht=0)
   For Bonie.Bon=Each Bon
      If Bonie\hide=0 Then DrawImage img,Bonie\X,Bonie\Y
      
      If RectsOverlap(Bonie\X,Bonie\Y,10,10, X,Y,1,1) Then B(Bonie\art)=B(Bonie\art)+1 : Delete Bonie.Bon
      
   Next
End Function

Spiel.bb
Code: [AUSKLAPPEN]

Graphics 640,480,0,2
SeedRnd MilliSecs()
Local img[3]; image anzahl wird auf 3 gesetzt
Const Max_bon=1

Dim B(Max_bon); die speicherkapatzität, für die Bonies wird erstellt

If ng=2 Then; Tickmodus, wird vorbereitet!
   Ticken=Rand(1,2)
   SendNetMsg(2,""+Ticken+"",Net_P,0)
   Last_bonus_Time=MilliSecs()+500
Else
   Repeat : Until RecvNetMsg() : Ticken=NetMsgData(); warten, auf "Tickerermitlung"
EndIf

Schwartz=ReadPixel(100,100); Farbe Schwartz, wird Definiert

img[1]=CreateImage(640,480) : SetBuffer ImageBuffer(img[1]) : Color 128, 64,0 : Rect 0,0,640,480; Vordergrund
img[2]=CreateImage(640,480) : SetBuffer ImageBuffer(img[2]) : Color   0,  0,0 : Rect 0,0,640,480; Hintergrund
img[3]=CreateImage(10,10)   : SetBuffer ImageBuffer(img[3]) : Color   0,255,0 : Rect 0,0,10,10 : Color 0,0,0 : Text 5,5,"?",1,1; Kisten

Energie_Time_Add=125; wie lange man warten muss
Energie_Max=20; Maximale Energie
Energie_Time_Last=MilliSecs()+Energie_Time_Add; erste Energie zugabe wird registriert
Energie=Energie_Max; Energie wird auf maximum gesetzt
GrabGrose=10; größe des Grben Oval

Global Bonie.Bon,Last_bonus_Time; bonus Variable; Fehler

SetBuffer ImageBuffer(img[1]); anfangs positionen, werden eingezeichnet
If ng=2 Then X =1 : Y =1 : X1=639 : Y1=479 : Color 0,0,0 : Oval  -5, -5,20,20
If ng=1 Then X1=1 : Y1=1 : X =639 : Y =479 : Color 0,0,0 : Oval 630,470,20,20
SetBuffer BackBuffer()

New_Bon(315,235,MilliSecs()+Rand(60000,120000),1); ein Bonie, wird in der mitte platziert

Repeat
   
   DrawBlock img[1],0,0 : DrawImage img[2],0,0; hintergrund: Vordergrund
   Akt_bon(img[3],X,Y); Bonies Aktualisieren
   
   If ng=Ticken Then Color 0,0,255 Else Color 255,255,255; Spieler
   Rect X -2,Y -2,5,5
   Color 255,255,255 : Text 0,465,"E:"+Energie
   If ng<>Ticken Then Color 0,0,255 Else Color 255,  0,  0
   Rect X1-2,Y1-2,5,5
   
   ; ermittelt, ob was geschickt wird
   If RecvNetMsg() Then
      Select NetMsgType()
         Case 101,102,200 : End
         Case 2
            Net_K$=NetMsgData()
            X1=Int(Net_K$) : Y1=Mid(Net_K$,Len(X1)+2)
         ;Case 3
            ;Bonie.Bon=NetMsgData();verschiebt die Bonies
      End Select
   EndIf
   
   ; Bewegen
   If LG_Time<MilliSecs() Then
      If KeyDown(205) Then; links
         If ReadPixel(X+1,Y  ,ImageBuffer(img[1]))=Schwartz And X<639 Then X=X+1 : LG_Time=MilliSecs()+5 : Bewe=1
      EndIf
      If KeyDown(203) Then; rechts
         If ReadPixel(X-1,Y  ,ImageBuffer(img[1]))=Schwartz And X>  1 Then X=X-1 : LG_Time=MilliSecs()+5 : Bewe=1
      EndIf
      If KeyDown(200) Then; oben
         If ReadPixel(X  ,Y-1,ImageBuffer(img[1]))=Schwartz And Y>  1 Then Y=Y-1 : LG_Time=MilliSecs()+5 : Bewe=1
      EndIf
      If KeyDown(208) Then; unten
         If ReadPixel(X  ,Y+1,ImageBuffer(img[1]))=Schwartz And Y<479 Then Y=Y+1 : LG_Time=MilliSecs()+5 : Bewe=1
      EndIf
   EndIf
   
   ; Koordinaten werden übermittelt
   If Aktual_Time<MilliSecs() Then
      Aktual_Time=MilliSecs()+250
      If RectsOverlap(X-1,Y-1,3,3, X1-1,Y1-1,3,3) And TT<MilliSecs() Then TT=MilliSecs()+Rand(5000,10000) : If Ticken=1 Then Ticken=2 Else Ticken=1
      SendNetMsg(2,X+","+Y,Net_P,0)
      If ng=1 Then; wenn betreffender Spieler der Host ist(Bonies)
         If Last_bonus_Time<MilliSecs() Then; wenn ein Neuer Bonus hinzugefügt werden soll
            New_Bon(Rand(0,630),Rand(0,470),MilliSecs()+Rand(3000,120000),0,Rand(-2,1))
         EndIf
      EndIf
   EndIf
   
   ; graben
   If (MouseDown(1) Or KeyDown(57)) And Energie>10 And Bewe=1 Then
      SetBuffer ImageBuffer(img[1])
         Bewe=0
         Color 0,0,0
         Oval X-(GrabGrose/2),Y-(GrabGrose/2),GrabGrose,GrabGrose
         Energie=Energie-10
      SetBuffer BackBuffer()
   EndIf
   
   ; energie dazu geben
   If Energie<Energie_Max And Energie_Time_Last<MilliSecs() Then
      Energie_Time_Last=MilliSecs()+Energie_Time_Add
      Energie=Energie+1
   EndIf
   
   Flip
Until KeyHit(1)
Programmers dont die. They gosub without return...
  • Zuletzt bearbeitet von Schnuff am So, März 19, 2006 10:05, insgesamt 2-mal bearbeitet
 

Dreamora

BeitragSa, März 18, 2006 23:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Du definierst in der Include Bonie.bon, In der Akt_Bon hast du aber für die Schleife ein Bonie.bon deklariert
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Schnuff

BeitragSo, März 19, 2006 0:03
Antworten mit Zitat
Benutzer-Profile anzeigen
und wie löse ich ds probelm?
Programmers dont die. They gosub without return...
 

Dreamora

BeitragSo, März 19, 2006 3:09
Antworten mit Zitat
Benutzer-Profile anzeigen
die variable in der Schleife am besten umbennen , zb in tbonie Smile
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Schnuff

BeitragSo, März 19, 2006 9:14
Antworten mit Zitat
Benutzer-Profile anzeigen
also an dieser Funktion lag es irgentwie nicht, auch wenn ich sie auskommentier(inhalt rausnehme) funktioniert es nicht Crying or Very sad

Hat sich erledigt Embarassed Embarassed Embarassed
Programmers dont die. They gosub without return...

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group