langsamme Gschwindigkeit von BB3D
Übersicht

![]() |
BaschdiBetreff: langsamme Gschwindigkeit von BB3D |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich habe ein programm ohne images gemacht in dem man units erstellen, selektieren, bewegen kann!
und es gibt feinde die die automatisch abgeknallt werden kommen sie in die nähe ABER deas programm ist soooooooooooo langsam das der com nach ca 20 units deutlich langsamer wird !!!! Das liegt am Progrmm denn ich hab das Spiel auch mal auf nen anderen Rechner (der schneller besser ist und mehr RAM hat) probiert..., mit dem selben Ergebis !!! Ich hoffe man kann da was tun ![]() |
||
The_Baschdi@
Wer in Ogame is soll sofort zum Orden wechseln (D.O.) --- Alle Macht dem Orden |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ohne Code können wir nur Schulterzucken und Dir raten zu optimieren. | ||
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 |
![]() |
Baschdi |
![]() Antworten mit Zitat ![]() |
---|---|---|
hier id der code !!!!
er hat keine images also kopiert ihn einfach - taste 1 für freunde erstellen - taste 2 für feinde erstellen Code: [AUSKLAPPEN] Graphics 1024,768,32,1 SetBuffer BackBuffer() Type feld Field x,y,nr,block,typ End Type Type gegner Field x,y,xZ,yZ,xx,yy,typ,sel Field leb,att,dauer Field activ,num,buf,buf2,test,angriff,angriff2 End Type Type bullet Field x,y,xZ,yZ,xx,yy,leb End Type Type kullet Field x,y,xZ,yZ,xx,yy,leb End Type Type unit Field x,y,xZ,yZ,xx,yy,typ,sel Field leb,att,dauer Field activ,num,buf,test End Type Type bau Field x,y,xx,yy,typ,sel Field leb,dauer Field activ,num,buf,test End Type Global elete Global mx,my,count Global xback,yback,map_weight=24,map_height=24 Global TempX, TempY Global MX2, MY2 Global StartX, StartY, EndX, EndY Dim nummer(255) ;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ; MakeMap() NewBau(100,100) ; Repeat Cls MoveBack() UpdateBack() UpdateUnit() UpdateEnemy() UpdateBau() UpdateBullet() UpdateKugel() Maus() ; If KeyHit(2) Then NewUnit(mx+xback,my+yback) If KeyHit(3) Then NewEnemy(mx+xback,my+yback) If KeyHit(4) Then NewBullet(0,0,mx+xback,my+yback) ; mx=MouseX() my=MouseY() Color 0,50,200 Rect mx,my,5,5,0 ; Flip Until KeyHit(1) End ;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Function NewUnit(x,y) For i=1 To 1 un.unit=New unit un\xx=x un\yy=y un\typ=Rnd(0,1) un\xZ=un\xx un\yZ=un\yy un\activ=1 un\leb=100 un\dauer=100 un\att=Rnd(4,6) Next End Function ;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Function UpdateUnit() For un.unit=Each unit un\x=un\xx-xback un\y=un\yy-yback ;Bild zeigen Color 200,200,40 Rect un\x,un\y,32,32,1 If un\typ=0 Then: Color 29,122,18 ElseIf un\typ=1 Then: Color 3,50,150 EndIf If un\typ=0 And un\test=0 Then: un\leb=60 un\att=Rnd(1,3) un\test=1 un\dauer=20 ElseIf un\test=0 Then: un\leb=120 un\att=Rnd(10,12) un\test=1 un\dauer=12 EndIf Oval un\x,un\y,32,32 ;Nummer & co If un\sel=True Then: If nummer(1)=0 Then: un\num=1 : nummer(1)=1 ElseIf nummer(2)=0 And un\num=0 Then: un\num=2 : nummer(2)=2 ElseIf nummer(3)=0 And un\num=0 Then: un\num=3 : nummer(3)=3 ElseIf nummer(4)=0 And un\num=0 Then: un\num=4 : nummer(4)=4 ElseIf nummer(5)=0 And un\num=0 Then: un\num=5 : nummer(5)=5 ElseIf nummer(6)=0 And un\num=0 Then: un\num=6 : nummer(6)=6 ElseIf nummer(7)=0 And un\num=0 Then: un\num=7 : nummer(7)=7 ElseIf nummer(8)=0 And un\num=0 Then: un\num=8 : nummer(8)=8 ElseIf nummer(9)=0 And un\num=0 Then: un\num=9 : nummer(9)=9 EndIf Else: un\num=0 For i=0 To 9 nummer(i)=0 Next EndIf ;Selektieren und Deselektieren If RectsOverlap(un\x,un\y,32,32,StartX,StartY,EndX,EndY) And count<6 And un\activ=1 Then un\sel=True : count=count+1 : un\activ=0 If MouseDown(1) And un\activ=0 Then un\sel=False : count=count-1 : un\activ=1 If un\sel=True Then Color 150,150,150 : Rect un\x,un\y,32,32,0 ;xZ,yZ bestimmen If un\sel=True Then: If MouseDown(2) Then: For fe.feld=Each feld If RectsOverlap(mx,my,5,5,fe\x-xback,fe\y-yback,32,32) And fe\typ=0 Then: If un\num<=3 Then: un\yZ=fe\y un\xZ=fe\x+un\num*32 Else: un\yZ=fe\y-32 un\xZ=fe\x+(un\num-3)*32 EndIf EndIf Next EndIf EndIf ;zum stehen kommen If un\x=un\xZ And un\y=un\yZ Then: un\xZ=un\x un\yZ=un\y EndIf ;Bewegen mit xZ,yZ If un\xx < un\xZ Then: un\xx=un\xx+1 ElseIf un\xx > un\xZ Then: un\xx=un\xx-1 EndIf If un\yy < un\yZ Then: un\yy=un\yy+1 ElseIf un\yy > un\yZ Then: un\yy=un\yy-1 EndIf ;Angreifen ,,,,,,,,,,,,,,,,,,,,,,,,,,,, un\buf=un\buf+1 For ge.gegner=Each gegner If ge\x<un\x+128 And ge\x>un\x-128 Then: If ge\y<un\y+128 And ge\y>un\y-128 Then: If un\buf>un\dauer Then un\buf=0 : NewBullet(un\x+xback,un\y+yback,ge\x+16+xback,ge\y+16+yback) EndIf EndIf Next ;blubb If un\sel=True Then: For i=0 To un\leb/10 Color 0,255,0 Rect un\x+i*2,un\y+34,2,2,1 Next EndIf ;die If un\leb<1 Then: If un\sel=True Then count=count-1 Delete un EndIf ; Next End Function ;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Function NewEnemy(x,y) For i=1 To 1 ge.gegner=New gegner ge\xx=x ge\yy=y ge\typ=Rnd(0,1) ge\xZ=ge\xx ge\yZ=ge\yy ge\activ=1 ge\leb=120 ge\att=Rnd(2,4) ge\angriff=True ge\angriff2=True ge\dauer=100 Next End Function ;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Function UpdateEnemy() For ge.gegner=Each gegner ge\x=ge\xx-xback ge\y=ge\yy-yback ; Color 200,200,40 Rect ge\x,ge\y,32,32,1 If ge\typ=0 Then: Color 124,1,1 ElseIf ge\typ=1 Then: Color 185,60,2 EndIf If ge\typ=0 And ge\test=0 Then: ge\leb=45 ge\att=Rnd(3,4) ge\test=1 ge\dauer=20 ElseIf ge\test=0 Then: ge\leb=100 ge\att=Rnd(11,12) ge\test=1 ge\dauer=10 EndIf Oval ge\x,ge\y,32,32 ; If ge\sel=True Then: If nummer(1)=0 Then: ge\num=1 : nummer(1)=1 ElseIf nummer(2)=0 And ge\num=0 Then: ge\num=2 : nummer(2)=2 ElseIf nummer(3)=0 And ge\num=0 Then: ge\num=3 : nummer(3)=3 ElseIf nummer(4)=0 And ge\num=0 Then: ge\num=4 : nummer(4)=4 ElseIf nummer(5)=0 And ge\num=0 Then: ge\num=5 : nummer(5)=5 ElseIf nummer(6)=0 And ge\num=0 Then: ge\num=6 : nummer(6)=6 ElseIf nummer(7)=0 And ge\num=0 Then: ge\num=7 : nummer(7)=7 ElseIf nummer(8)=0 And ge\num=0 Then: ge\num=8 : nummer(8)=8 ElseIf nummer(9)=0 And ge\num=0 Then: ge\num=9 : nummer(9)=9 EndIf Else: ge\num=0 For i=0 To 9 nummer(i)=0 Next EndIf ; For un.unit=Each unit If ge\angriff=True Then: If ge\num<=3 Then: ge\yZ=un\y+yback+Rnd(-100,100) ge\xZ=un\x+Rnd(-100,100)+xback EndIf EndIf Next For ba.bau=Each bau If ge\angriff2=True Then: If ge\num<=3 Then: ge\yZ=ba\y+yback+Rnd(-100,100) ge\xZ=ba\x+Rnd(-100,100)+xback EndIf EndIf Next If ge\x=ge\xZ And ge\y=ge\yZ Then: ge\xZ=ge\x ge\yZ=ge\y ;ge\angriff=False EndIf ; If ge\xx < ge\xZ Then: ge\xx=ge\xx+1 ElseIf ge\xx > ge\xZ Then: ge\xx=ge\xx-1 EndIf If ge\yy < ge\yZ Then: ge\yy=ge\yy+1 ElseIf ge\yy > ge\yZ Then: ge\yy=ge\yy-1 EndIf ;Angreifen ,,,,,,,,,,,,,,,,,,,,,,,,,,,, ge\buf=ge\buf+1 ge\buf2=ge\buf2+1 For un.unit=Each unit For ba.bau=Each bau If un\x<ge\x+128 And un\x>ge\x-128 Then: If un\y<ge\y+128 And un\y>ge\y-128 Then: If ge\buf>ge\dauer Then ge\buf=0 : NewKugel(ge\x+xback,ge\y+yback,un\x+16+xback,un\y+16+yback) EndIf EndIf If ba\x<ge\x+128 And ba\x>ge\x-128 Then: If ba\y<ge\y+128 And ba\y>ge\y-128 Then: If ge\buf2>ge\dauer Then ge\buf2=0 : NewKugel(ge\x+xback,ge\y+yback,ba\x+16+xback,ba\y+16+yback) EndIf EndIf Next Next ;asdg For i=0 To ge\leb/10 Color 0,255,0 Rect ge\x+i*2,ge\y+34,2,2,1 Next ;die If ge\leb<1 Then Delete ge Next End Function ;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Function Maus() If MouseHit(1) Then: TempX = MouseX() TempY = MouseY() EndIf If MouseDown(1) Then: MX2 = MouseX() MY2 = MouseY() If MX2>TempX Then: StartX = TempX EndX = MX2-TempX Else: StartX = MX2 EndX = TempX-MX2 EndIf If MY2>TempY Then: StartY = TempY EndY = MY2-TempY Else: StartY = MY2 EndY = TempY-MY2 EndIf Color 0,255,0 Rect StartX, StartY, EndX, EndY,0 Else: MX2 = TempX MY2 = TempY EndIf If MouseHit(2) Then Rect mx,my,5,5 End Function ;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ;###################################################################### Function SetBack(num) For i=0 To map_weight-1 For q=0 To map_height-1 fe.feld=New feld fe\x=i*32 fe\y=q*32 fe\nr=num Next Next End Function ;###################################################################### Function SetObject(nummer,xkoo,ykoo) fe.feld=New feld fe\x=xkoo*32 fe\y=ykoo*32 fe\nr=nummer End Function ;###################################################################### Function UpdateBack() For fe.feld=Each feld If fe\nr=1 Then Rect fe\x+1-xback,fe\y+1-yback,30,30,1 : fe\block=1 If fe\nr=3 Then Rect fe\x+1-xback,fe\y+1-yback,30,30,1 : fe\block=1 ;DrawImage feld,fe\x-xback,fe\y-yback,fe\nr Color 200,200,40 Rect fe\x-xback,fe\y-yback,32,32,1 For un.unit=Each unit If RectsOverlap(un\x,un\y,32,32,fe\x,fe\y,32,32) Then: fe\typ=1 ElseIf RectsOverlap(un\x,un\y,32,32,mx,my,5,5) Then: fe\typ=0 EndIf Next Next End Function ;###################################################################### Function MoveBack() If KeyDown(200) And MouseDown(1)=0 Then yback=yback-10 If KeyDown(208) And MouseDown(1)=0 Then yback=yback+10 If KeyDown(203) And MouseDown(1)=0 Then xback=xback-10 If KeyDown(205) And MouseDown(1)=0 Then xback=xback+10 End Function ;###################################################################### Function MakeMap() SetBack(bg) For i=1 To berg_anzahl SetObject(1,Rnd(map_weight-1),Rnd(map_height-1)) Next For i=1 To sand_anzahl SetObject(2,Rnd(map_weight-1),Rnd(map_height-1)) Next For i=1 To wasser_anzahl SetObject(3,Rnd(map_weight-1),Rnd(map_height-1)) Next For i=0 To map_weight-1 SetObject(1,i,map_height-1) Next For i=0 To map_height-1 SetObject(1,map_weight-1,i) Next For i=0 To map_weight-1 SetObject(1,i,0) Next For i=0 To map_height-1 SetObject(1,0,i) Next End Function ;###################################################################### ;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Function NewBullet(x,y,a,b) For i=1 To 1 bu.bullet=New bullet bu\xx=x bu\yy=y bu\xZ=a bu\yZ=b bu\leb=100 Next End Function ;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Function UpdateBullet() For bu.bullet=Each bullet bu\x=bu\xx-xback bu\y=bu\yy-yback ; Color 100,100,100 Oval bu\x,bu\y,5,5 bu\leb=bu\leb-1 ; If bu\xx < bu\xZ Then: bu\xx=bu\xx+3 ElseIf bu\xx > bu\xZ Then: bu\xx=bu\xx-3 EndIf If bu\yy < bu\yZ Then: bu\yy=bu\yy+3 ElseIf bu\yy > bu\yZ Then: bu\yy=bu\yy-3 EndIf ; For un.unit=Each unit For ge.gegner=Each gegner If RectsOverlap(bu\x,bu\y,5,5,ge\x,ge\y,32,32) Then: ge\leb=ge\leb-un\att elete=1 EndIf Next Next ; If elete=1 Or bu\leb<1 Then elete=0 Delete bu Next End Function ;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Function NewKugel(x,y,a,b) For i=1 To 1 ku.kullet=New kullet ku\xx=x ku\yy=y ku\xZ=a ku\yZ=b ku\leb=100 Next End Function ;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Function UpdateKugel() For ku.kullet=Each kullet ku\x=ku\xx-xback ku\y=ku\yy-yback ; Color 100,100,100 Oval ku\x,ku\y,5,5 ku\leb=ku\leb-1 ; If ku\xx < ku\xZ Then: ku\xx=ku\xx+3 ElseIf ku\xx > ku\xZ Then: ku\xx=ku\xx-3 EndIf If ku\yy < ku\yZ Then: ku\yy=ku\yy+3 ElseIf ku\yy > ku\yZ Then: ku\yy=ku\yy-3 EndIf ; For un.unit=Each unit For ge.gegner=Each gegner If RectsOverlap(ku\x,ku\y,5,5,un\x,un\y,32,32) Then: un\leb=un\leb-ge\att elete=1 EndIf Next Next For ba.bau=Each bau For ge.gegner=Each gegner If RectsOverlap(ku\x,ku\y,5,5,ba\x,ba\y,32,32) Then: ba\leb=ba\leb-ge\att elete=1 EndIf Next Next ; If elete=1 Or ku\leb<1 Then elete=0 Delete ku Next End Function ;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Function NewBau(x,y) For i=1 To 1 ba.bau=New bau ba\xx=x ba\yy=y ba\typ=Rnd(0,1) ba\activ=1 ba\leb=100 ba\dauer=10 Next End Function ;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Function UpdateBau() For ba.bau=Each bau ba\x=ba\xx-xback ba\y=ba\yy-yback ;Bild zeigen Color 200,200,200 Rect ba\x-4,ba\y-4,40,40,1 If ba\typ=0 Then: Color 50,50,50 ElseIf ba\typ=1 Then: Color 150,150,150 EndIf If ba\typ=0 And ba\test=0 Then: ba\leb=60 ba\test=1 ba\dauer=20 ElseIf ba\test=0 Then: ba\leb=120 ba\test=1 ba\dauer=12 EndIf Oval ba\x,ba\y,32,32 ;Selektieren bad Deselektieren If RectsOverlap(ba\x,ba\y,32,32,StartX,StartY,EndX,EndY) And cobat<6 And ba\activ=1 Then ba\sel=True : cobat=cobat+1 : ba\activ=0 If MouseDown(1) And ba\activ=0 Then ba\sel=False : cobat=cobat-1 : ba\activ=1 If ba\sel=True Then Color 150,150,150 : Rect ba\x-4,ba\y-4,40,40,0 ;blubb If ba\sel=True Then: For i=0 To ba\leb/10 Color 0,255,0 Rect ba\x+i*2,ba\y+34,2,2,1 Next EndIf ;bau der marines... If ba\sel=True And MouseDown(2) Then NewUnit(ba\x+xback+32,ba\y+yback) ;die If ba\leb<1 Then: If ba\sel=True Then cobat=cobat-1 Delete ba EndIf ; Next End Function ;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, |
||
The_Baschdi@
Wer in Ogame is soll sofort zum Orden wechseln (D.O.) --- Alle Macht dem Orden |
![]() |
DerHase |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei mir sind die Oval und Rect Funktionen so langsam, dass ich sie lieber gar nicht verwende. Wenn die Größe von denen nicht verändert werden soll, erstell ich lieber mit CreateImage ein Bild und wende die Oval Funktion dann nur einmal an. Versuch das mal, vielleicht wird es schneller dadurch. | ||
Play Satyr! |
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
bei mir ist der code irgendwie garnicht langsam
pc siehe unten |
||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
![]() |
Baschdi |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich hab des mit createimage no net kapiert...kannst du mir ein beispiel programm machen=?????
dank im vorraus |
||
The_Baschdi@
Wer in Ogame is soll sofort zum Orden wechseln (D.O.) --- Alle Macht dem Orden |
![]() |
Spikespine |
![]() Antworten mit Zitat ![]() |
---|---|---|
Schau immer in die Onlinehilfe, wenn dir ein Befehl unklar ist! ql:CreateImage | ||
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax |
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Statt viele kleine Rechtecke zu malen besser ein Bild anzeigen ,
mit DrawImageRect kannst du auch nur Teile davon anzeigen . Habe deinen Quelltext nur angesehen und finde du hast zu viele Schleifen in Schleifen ... Ich würde die Update Funk unterteilen in gesamt und einzeln . |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group