% (Now / Total) herausfinden, schön und gut. nur was mache..
Übersicht

![]() |
Xaymarehemals "Cgamer"Betreff: % (Now / Total) herausfinden, schön und gut. nur was mache.. |
![]() Antworten mit Zitat ![]() |
---|---|---|
..ich daran falsch?
Ich bin seit einigen wochen an meinen Projekten Eye game und Eye Game 2 am arbeiten(sollte eigentlich Dot game heißen). Leider brauche ich für meine Draw_List-Funktion² eine Prozentzahl. Mein Problem ist: Es kommt nur 1.0 oder 0.0 heraus anstatt 0.99 oder auch 0.54(halt ner floatzahl von 0 - 1) Wie kann ich das beheben? MfG CGamer ²Code]}-<: Code: [AUSKLAPPEN] Function Draw_Lists()
For L.List = Each List SetBuffer ImageBuffer(L\IMG) Color 0,0,0:Rect 0,0,L\W,L\H C=0 For LE.LEntry = Each LEntry If LE\TID = L\ID If LE\S = 1 Color 153,153,153:Rect 0,-L\Y2+(16*C),L\W-15,16 EndIf If -L\Y2+(16*C)>=0 If CheckMouse(L\X,L\Y-L\Y2+(16*C),L\X+L\W-15,L\Y-L\Y2+(16*C)+16)=1 Color 255,255,255:Rect 0,-L\Y2+(16*C),L\W-15,16,0 ElseIf CheckMouse(L\X,L\Y-L\Y2+(16*C),L\X+L\W-15,L\Y-L\Y2+(16*C)+16)=2 Or CheckMouse2(L\X,L\Y-L\Y2+(16*C),L\X+L\W-15,L\Y-L\Y2+(16*C)+18)=2 For LE2.LEntry2 = Each LEntry2 If LE2\ID = LE\ID LE2\S = 1 EndIf Next RetVal=1 EndIf EndIf Color 255,255,255:Text 0,-L\Y2+(16*C),LE\T$ C=C+1 EndIf Next If CheckMouse(L\X+L\W-15,L\Y,L\X+L\W,L\Y+15)=2 DrawImage LAU2,L\W-15,0 L\Y2=L\Y2-3 Else DrawImage LAU,L\W-15,0 EndIf If CheckMouse(L\X+L\W-15,L\Y+L\H-15,L\X+L\W,L\Y+L\H)=2 DrawImage LAD2,L\W-15,L\H-15 L\Y2=L\Y2+3 Else DrawImage LAD,L\W-15,L\H-15 EndIf DrawImage LT,L\W-15,15 For Y2 = 30 To (L\H-30) Step 15 DrawImage LM,L\W-15,Y2 Next DrawImage LB,L\W-15,L\H-30 Y=C*16-L\H If L\Y2>Y L\Y2=Y If L\Y2<0 L\Y2=0 If C=0 And Y<=0 DrawImage LAU2,L\W-15,0 DrawImage LAD2,L\W-15,L\H-15 SetBuffer BackBuffer() Return 0 ElseIf C<>0 And Y<=0 Y=0 ElseIf C=0 DrawImage LAU2,L\W-15,0 DrawImage LAD2,L\W-15,L\H-15 SetBuffer BackBuffer() Return 0 Else Tmp0=L\H-45 If Y>0 Tmp1#=L\Y2/Y Else Tmp1#=0 EndIf DrawImage LD,L\W-15,15 EndIf Color 0,0,0 Rect 0,0,50,30 Color 255,255,255 Text 0,0,Tmp0 Text 0,15,Tmp1# If Y>0 Text 0,30,L\Y2/Y*100 EndIf SetBuffer BackBuffer() Border(L\X,L\Y,L\W,L\H) DrawImage L\IMG,L\X,L\Y Next If RetVal>0 Return RetVal End Function Kompletter Code]}-<: Code: [AUSKLAPPEN] ;Eye Game 2
;by Small Soft Global widt,heig,dept,lang$,style$ file=OpenFile("GFX/config.txt") widt=Int(ReadLine(file)) heig=Int(ReadLine(file)) dept=Int(ReadLine(file)) lang$=ReadLine(file) style$=ReadLine(file) CloseFile file Graphics widt,heig,dept SetBuffer BackBuffer() HidePointer() ;Tiles Type Tiles Field Img,Var End Type Ti.Tiles = New Tiles Ti\Img = LoadImage("GFX/Tileset/Wall.bmp") Ti.Tiles = New Tiles Ti\Img = LoadImage("GFX/Tileset/Floor.bmp") Ti.Tiles = New Tiles Ti\Img = LoadImage("GFX/Tileset/Player.bmp") Ti.Tiles = New Tiles Ti\Img = LoadImage("GFX/Tileset/Target.bmp") Ti.Tiles = New Tiles Ti\Img = LoadImage("GFX/Tileset/Round.bmp") Ti.Tiles = New Tiles Ti\Img = LoadAnimImage("GFX/Tileset/Block.bmp",20,20,0,4) Ti.Tiles = New Tiles Ti\Img = LoadAnimImage("GFX/Tileset/Circle.bmp",20,20,0,4) Ti.Tiles = New Tiles Ti\Img = LoadAnimImage("GFX/Tileset/Holes.bmp",20,20,0,3) Ti.Tiles = New Tiles Ti\Img = LoadAnimImage("GFX/Tileset/F_Holes.bmp",20,20,0,3) Ti.Tiles = New Tiles Ti\Img = LoadAnimImage("GFX/Tileset/Spawner.bmp",20,20,0,4) LV=-1 For Ti.Tiles = Each Tiles MaskImage Ti\Img,255,0,255 LV=LV+1 Ti\Var=LV Next ;Loading BG = LoadImage("GFX/Style/"+style$+"/"+style$+".jpg"):bwid=ImageWidth(BG):bhei=ImageHeight(BG) MS = LoadImage("GFX/Style/"+style$+"/Mouse.bmp"):MaskImage MS,255,0,255 Global BU,BH,BD BU = LoadImage("GFX/Style/"+style$+"/B_U.bmp"):BH = LoadImage("GFX/Style/"+style$+"/B_H.bmp"):BD = LoadImage("GFX/Style/"+style$+"/B_D.bmp") MaskImage BU,255,0,255:MaskImage BH,255,0,255:MaskImage BD,255,0,255 Global LAU,LAD,LAU2,LAD2 Global LD,LT,LM,LB ListIMG=LoadImage("GFX/Style/"+style$+"/List.bmp"):SetBuffer ImageBuffer(ListIMG) LAU=CI(15,15):LAU2=CI(15,15):LAD=CI(15,15):LAD2=CI(15,15):LD=CI(15,15):LT=CI(15,15):LM=CI(15,15):LB=CI(15,15) GrabImage LAU,0,0:GrabImage LAU2,30,0:GrabImage LAD,15,0:GrabImage LAD2,45,0:GrabImage LD,0,15:GrabImage LT,15,15:GrabImage LM,30,15:GrabImage LB,45,15 MaskImage LAU,255,0,255:MaskImage LAU2,255,0,255:MaskImage LAD,255,0,255:MaskImage LAD2,255,0,255:MaskImage LD,255,0,255:MaskImage LT,255,0,255:MaskImage LM,255,0,255:MaskImage LB,255,0,255 SetBuffer BackBuffer() ;Load Colors file=OpenFile("GFX/Style/"+style$+"/colors.txt") CArt=Int(ReadLine(file)) InAct=Int(ReadLine(file)) Activ=Int(ReadLine(file)) SArt=Int(ReadLine(file)) CloseFile file Global GR,GG,GB,GR2,GG2,GB2 If CArt = 0 GR=InAct GG=0 GB=0 GR2=Activ GG2=0 GB2=0 ElseIf CArt = 1 GR=0 GG=InAct GB=0 GR2=0 GG2=Activ GB2=0 Else GR=0 GG=0 GB=InAct GR2=0 GG2=0 GB2=Activ EndIf ;Load Langauge Global Me$,Fi$,Ne$,Lo$,Op$,En$,Sa$,Re$,Loa$,Ba$,Res$,Col$,Lan$,War$,Clo$,Yes$,No$ LS=OpenFile("Lang/"+lang$+".txt") ReadLine(LS) ;Main Me$=ReadLine(LS) Fi$=ReadLine(LS) ReadLine(LS) ReadLine(LS) ;Menu Ne$=ReadLine(LS) Lo$=ReadLine(LS) Op$=ReadLine(LS) En$=ReadLine(LS) ReadLine(LS) ReadLine(LS) ;File Sa$=ReadLine(LS) Re$=ReadLine(LS) Loa$=ReadLine(LS) Ba$=ReadLine(LS) ReadLine(LS) ReadLine(LS) ;Options Res$=ReadLine(LS) Col$=ReadLine(LS) Lan$=ReadLine(LS) Skin$=ReadLine(LS) ReadLine(LS) War$=ReadLine(LS) ;Warning Clo$=ReadLine(LS) Yes$=ReadLine(LS) No$=ReadLine(LS) CloseFile LS ;Level Vars Dim Level(30,20,1) Dim Levl2(30,20) For A=0 To 30 For B=0 To 20 Level(A,B,0) = 0 Level(A,B,1) = 0 Levl2(A,B) = 0 Next Next ;Load/Play Sound/Music Global Hover,Click Music=LoadSound("SFX/Music.wav") Hover=LoadSound("SFX/Hover.wav") Click=LoadSound("SFX/Click.wav") LoopSound Music If CommandLine() = "" Chan=PlaySound(Music) ChanVol#=0 EndIf ;Init List Type List Field X,Y,W,H,Y2 Field ID,IMG End Type Type LEntry Field T$,ID Field TID,S End Type Type LEntry2 Field ID,S,TID End Type ;Setup Lists L=CreateList(widt/2-50,heig/2+20,120,80) dir=ReadDir(CurrentDir$()+"Lang\") Repeat cfile$=""+NextFile$(dir) If cfile$="" Exit If Left(cfile$,1) <> "." Add_List(L,cfile$) EndIf Forever CloseDir dir S=CreateList(widt/2+75,heig/2+20,120,80) dir=ReadDir(CurrentDir$()+"GFX\Style\") Repeat cfile$=""+NextFile$(dir) If cfile$="" Exit If Left(cfile$,1) <> "." And FileType(CurrentDir$()+"GFX\Style\"+cfile$)=2 Add_List(S,cfile$) EndIf Forever CloseDir dir R=CreateList(widt/2+200,heig/2+20,120,80) GModes=CountGfxModes() For i = 1 To GModes Add_List(R,GfxModeWidth(i)+"x"+GfxModeHeight(i)+"|"+GfxModeDepth(i)) Next ;Main .Main FlushMouse() Global PS=0,PSID=-1,CC Global MX,MY Repeat MX=MouseX() MY=MouseY() Cls DrawImage BG,widt/2-bwid/2, heig/2-bhei/2 If ChanVol# < 1 And CommandLine() = "" ChanVol# = ChanVol# + 0.01 ChannelVolume Chan,ChanVol# EndIf Select GS Case 0 NG=DrawButton(widt/2-300, heig/2, Ne$, 0) LG=DrawButton(widt/2-300, heig/2+20, Lo$, 1) OT=DrawButton(widt/2-300, heig/2+40, Op$, 2) EG=DrawButton(widt/2-300, heig/2+60, En$, 3) If NG = 1 GS=1 If LG = 1 GS=1:LM=1 If OT = 1 GSO=1-GSO If EG = 1 Goto Warning If GSO=1 Border(widt/2-50,heig/2,400,100) Color 255,255,255 Text widt/2-50,heig/2,Lan$ Text widt/2+75,heig/2,Skin$ Text widt/2+200,heig/2,Skin$ Draw_Lists() Update_Lists() EndIf Case 1 Border(widt/2-250,heig/2-200,600,400) DrawLevel(widt/2-250,heig/2-200) End Select DrawImage MS,MouseX(),MouseY() Flip If (MilliSecs() Mod 100) > 75 FlushMouse() FlushKeys() EndIf Forever .Warning Repeat MX=MouseX() MY=MouseY() Cls DrawImage BG,widt/2-bwid/2, heig/2-bhei/2 Border(widt/2-100,heig/2-45,200,18) Color 255,255,255 Text widt/2,heig/2-35,War$,1,1 Border(widt/2-100,heig/2-25,200,50) Color 255,255,255 Text widt/2,heig/2-15,Clo$,1,1 Y=DrawButton(widt/2-100,heig/2,Yes$, 99) N=DrawButton(widt/2,heig/2,No$, 100) If Y=1 Goto ExitLoop If N=1 Goto Main DrawImage MS,MouseX(),MouseY() Flip Forever .ExitLoop While ChanVol# > 0 And CommandLine() = "" MX=MouseX() MY=MouseY() ChanVol# = ChanVol# - 0.01 ChannelVolume Chan,ChanVol# Flip Wend End ;Functions Function CheckMouse(X1,Y1,X2,Y2) If MX >= X1 And MY >= Y1 If MX < X2 And MY < Y2 If MouseDown(1) Return 2 Else Return 1 EndIf Else Return 0 EndIf Else Return 0 EndIf End Function Function CheckMouse2(X1,Y1,X2,Y2) If MX >= X1 And MY >= Y1 If MX < X2 And MY < Y2 If MouseHit(1) Return 2 Else Return 1 EndIf Else Return 0 EndIf Else Return 0 EndIf End Function Function DrawLevel(X,Y) For A = 0 To 29 For B = 0 To 19 Select Level(A,B,0) Case 0 For Ti.Tiles = Each Tiles If Ti\Var = 0 DrawImage Ti\Img,X+A*20,Y+B*20 EndIf Next Case 1 For Ti.Tiles = Each Tiles If Ti\Var = 1 DrawImage Ti\Img,X+A*20,Y+B*20 EndIf Next Case 2 For Ti.Tiles = Each Tiles If Ti\Var = 2 DrawImage Ti\Img,X+A*20,Y+B*20 EndIf Next Case 3 For Ti.Tiles = Each Tiles If Ti\Var = 3 DrawImage Ti\Img,X+A*20,Y+B*20 EndIf Next Case 4 For Ti.Tiles = Each Tiles If Ti\Var = 4 DrawImage Ti\Img,X+A*20,Y+B*20 EndIf Next Case 7 For Ti.Tiles = Each Tiles If Ti\Var = 7 DrawImage Ti\Img,X+A*20,Y+B*20 EndIf Next Case 8 For Ti.Tiles = Each Tiles If Ti\Var = 8 DrawImage Ti\Img,X+A*20,Y+B*20 EndIf Next Case 9 For Ti.Tiles = Each Tiles If Ti\Var = 9 DrawImage Ti\Img,X+A*20,Y+B*20 EndIf Next End Select Next Next End Function Function UpdateLevel() End Function Function UpdatePlayer(TX,TY) End Function Function DrawButton(X,Y,T$,ID) RetVal=0 TX=X+50-1:TY=Y+10-1 DrawImage BU,X,Y Color GR,GG,GB If CheckMouse(X,Y,X+100,Y+20)=2 And CC=0 DrawImage BD,X,Y PlaySound(Hover) Color GR2,GG2,GB2 TX=X+50+1 TY=Y+10+1 RetVal=0 CC=1 ElseIf CheckMouse(X,Y,X+100,Y+20)=2 And CC=1 DrawImage BD,X,Y Color GR2,GG2,GB2 TX=X+50+1 TY=Y+10+1 RetVal=0 CC=1 ElseIf CheckMouse(X,Y,X+100,Y+20)=1 And CC=1 DrawImage BU,X,Y Color GR2,GG2,GB2 TX=X+50+1 TY=Y+10+1 RetVal=1 CC=0 ElseIf CheckMouse(X,Y,X+100,Y+20)=1 And CC=0 DrawImage BH,X,Y Color 255,255,255 If PS=0 And PSID = -1 And PSID <> ID PS=1 PSID=ID PlaySound(Click) EndIf ElseIf CheckMouse(X,Y,X+100,Y+20)=0 And PSID = ID And PS = 1 PS=0 PSID=-1 EndIf Text TX,TY,T$,1,1 Return RetVal End Function Function Border(X,Y,W,H,O=1) Color GR,GG,GB Rect X-2,Y-2,W+4,H+4,0 Color GR2,GG2,GB2 Rect X-1,Y-1,W+2,H+2,O End Function Function CreateList(X,Y,W,H) L.List = New List L\X=X : L\Y=Y: L\W=W : L\H=H L\ID = MilliSecs() L\IMG = CreateImage(W,H) : MaskImage L\IMG,255,0,255 Return L\ID End Function Function Add_List(TID,Name$) LE.LEntry = New LEntry LE\ID=MilliSecs()+Rnd(0,60000) LE\T$=Name$ LE\TID=TID LE2.LEntry2 = New LEntry2 LE2\ID=LE\ID LE2\TID=LE\TID Return LE\ID End Function Function Rem_List(ID,TID) For LE.LEntry = Each LEntry If LE\TID = TID And LE\ID = ID Delete LE.LEntry EndIf Next For LE2.LEntry2 = Each LEntry2 If LE2\ID = ID And LE2\TID = TID Delete LE2.LEntry2 EndIf Next End Function Function Draw_Lists() For L.List = Each List SetBuffer ImageBuffer(L\IMG) Color 0,0,0:Rect 0,0,L\W,L\H C=0 For LE.LEntry = Each LEntry If LE\TID = L\ID If LE\S = 1 Color 153,153,153:Rect 0,-L\Y2+(16*C),L\W-15,16 EndIf If -L\Y2+(16*C)>=0 If CheckMouse(L\X,L\Y-L\Y2+(16*C),L\X+L\W-15,L\Y-L\Y2+(16*C)+16)=1 Color 255,255,255:Rect 0,-L\Y2+(16*C),L\W-15,16,0 ElseIf CheckMouse(L\X,L\Y-L\Y2+(16*C),L\X+L\W-15,L\Y-L\Y2+(16*C)+16)=2 Or CheckMouse2(L\X,L\Y-L\Y2+(16*C),L\X+L\W-15,L\Y-L\Y2+(16*C)+18)=2 For LE2.LEntry2 = Each LEntry2 If LE2\ID = LE\ID LE2\S = 1 EndIf Next RetVal=1 EndIf EndIf Color 255,255,255:Text 0,-L\Y2+(16*C),LE\T$ C=C+1 EndIf Next If CheckMouse(L\X+L\W-15,L\Y,L\X+L\W,L\Y+15)=2 DrawImage LAU2,L\W-15,0 L\Y2=L\Y2-3 Else DrawImage LAU,L\W-15,0 EndIf If CheckMouse(L\X+L\W-15,L\Y+L\H-15,L\X+L\W,L\Y+L\H)=2 DrawImage LAD2,L\W-15,L\H-15 L\Y2=L\Y2+3 Else DrawImage LAD,L\W-15,L\H-15 EndIf DrawImage LT,L\W-15,15 For Y2 = 30 To (L\H-30) Step 15 DrawImage LM,L\W-15,Y2 Next DrawImage LB,L\W-15,L\H-30 Y=C*16-L\H If L\Y2>Y L\Y2=Y If L\Y2<0 L\Y2=0 If C=0 And Y<=0 DrawImage LAU2,L\W-15,0 DrawImage LAD2,L\W-15,L\H-15 SetBuffer BackBuffer() Return 0 ElseIf C<>0 And Y<=0 Y=0 ElseIf C=0 DrawImage LAU2,L\W-15,0 DrawImage LAD2,L\W-15,L\H-15 SetBuffer BackBuffer() Return 0 Else Tmp0=L\H-45 If Y>0 Tmp1#=L\Y2/Y Else Tmp1#=0 EndIf DrawImage LD,L\W-15,15 EndIf Color 0,0,0 Rect 0,0,50,30 Color 255,255,255 Text 0,0,Tmp0 Text 0,15,Tmp1# If Y>0 Text 0,30,L\Y2/Y*100 EndIf SetBuffer BackBuffer() Border(L\X,L\Y,L\W,L\H) DrawImage L\IMG,L\X,L\Y Next If RetVal>0 Return RetVal End Function Function Update_Lists() For LE2.LEntry2 = Each LEntry2 If LE2\S = 1 For LE.LEntry = Each LEntry If LE\ID = LE2\ID And LE\TID = LE2\TID LE\S = 1 ElseIf LE\TID = LE2\TID And LE\ID <> LE2\ID LE\S = 0 EndIf Next LE2\S = 0 EndIf Next End Function Function GetActive_List(TID,T=0) For LE.LEntry = Each LEntry If LE\S = 1 And LE\TID = TID And T=0 Return LE\ID Else Return LE\T$ EndIf Next End Function Function CI(W,H) Return CreateImage(W,H) End Function |
||
Warbseite |
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es wäre sinnvoller den Codeteil zu zeigen wo du es berechnest,
den bei den tollen Variablennamen blickt ja kaum einer durch. Ich rate mal.... Dein Problem wird sein das du mit Integerzahlen rechnest und die einer Floatvar zuweist! |
||
[BB2D | BB3D | BB+]
|
![]() |
Xaymarehemals "Cgamer" |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Tmp0=L\H-45
If Y>0 Tmp1#=L\Y2/Y Else Tmp1#=0 EndIf Den Teil? Zitat: Dein Problem wird sein das du mit Integerzahlen rechnest und die einer Floatvar zuweist!
-->Hab ich schon mit Float() und anderem Zeug versucht... -->Frag doch einfach nach dem Variablen Wert und Bedeutung... |
||
Warbseite |
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
Genau da liegt doch dein Problem...
Du hast Y in der Funktion als Integerzahl definiert. Ausserdem ist Y2 im Type auch als Integer definiert. Dann dividierst du Integer durch Integer - das kann nur schiefgehen. Ein einfaches Code: [AUSKLAPPEN] Tmp0=L\H-45
If Y>0 Tmp1#=L\Y2/Float( Y ) Else Tmp1#=0 EndIf würde da Abhilfe schaffen. |
||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
![]() |
Xaymarehemals "Cgamer" |
![]() Antworten mit Zitat ![]() |
---|---|---|
Thx jetzt funtzt... ich hatte vorher immer versucht: Tmp1#=float(LE\Y2/Y)
MfG CGamer |
||
Warbseite |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was nichts bringt da das Ergebnis, was ja eine Ganzzahl ist in einen Float gecastet wird - du aber eine Float brauchst die zum Ergebnis führt ![]() |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group