Käfer "Vermeren" sich net !?
Übersicht

![]() |
ToeBBetreff: Käfer "Vermeren" sich net !? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Graphics 800,600,16,2
SetBuffer BackBuffer() AppTitle "Das große Krabbeln" SeedRnd MilliSecs() Type info Field x#,y#,ms,w,winkel,s#,h_ms,h,typ,ID End Type Type o Field x,y,typ,ms End Type Dim K(30) Global b.info Global o.o Global max_speed=3,min_speed=1,max_time=3000,min_time=2000,hunger_time=5000,max_hunger = 10 Global count,tot = 0,leben = 0 Global Geld = 100,ID = 1 Global Kaefer = LoadImage("Kaefer.bmp") MaskImage Kaefer,255,0,255 MidHandle Kaefer For i = 0 To 29 K(i+1) = CopyImage(Kaefer) RotateImage K(i+1),i*12 Next For i = 1 To 2 b.info = New info b\x = Rand(1,780):b\y = Rand(1,580) b\w = Rand(1,360)b\winkel = 1:b\s = Rand(min_speed,max_speed)b\h = 0 b\h_ms = MilliSecs()+Rand(1000,hunger_time):b\ms = MilliSecs()+Rand(min_time,max_time) b\typ = i b\ID = ID:ID = ID + 1 Next Repeat If MouseHit(1) And Geld > 1 Then o.o = New o o\x = MouseX() o\y = MouseY() o\typ = 0 count = count + 1 o\ms = MilliSecs() + hunger_time*3 Geld = Geld - 2 EndIf leben = 0 For b.info = Each info If b\h_ms < MilliSecs() Then b\h = b\h + 1:b\h_ms = MilliSecs()+Rand(1000,hunger_time) If b\ms < MilliSecs() Or b\x+20 > 800 Or b\y+20 > 600 Or b\x < 1 Or b\y < 1 Then b\w = Rand(1,360):b\s = Rand(min_speed,max_speed):b\ms = MilliSecs() + Rand(min_time,max_time) If b\x+20 > 800 b\x = 780 b\w = Rand(0,180) b\winkel = b\w ElseIf b\y+20 > 600 b\y = 580 ww = Rand(1,2) If ww = 1 b\w = Rand(0,90) ElseIf ww = 2 b\w = Rand(270,360) b\winkel = b\w ElseIf b\x < 1 b\x = 1 b\w = Rand(180,360) b\winkel = b\w ElseIf b\y < 1 b\y = 1 b\w = Rand(90,270) b\winkel = b\w EndIf EndIf If b\winkel > b\w And b\winkel -180 < b\w Then b\winkel = b\winkel -2 If b\winkel > b\w And b\winkel -180 > b\w Then b\winkel = b\winkel +2 If b\winkel < b\w And b\winkel +180 < b\w Then b\winkel = b\winkel -2 If b\winkel < b\w And b\winkel +180 > b\w Then b\winkel = b\winkel +2 If b\winkel = b\w -180 Or b\winkel -180 = b\w Then b\winkel = b\winkel +2 If b\winkel < 1 Then b\winkel = 360 If b\winkel > 360 Then b\winkel = 1 b\x = b\x + Cos(b\winkel+90) * b\s b\y = b\y - Sin(b\winkel+90) * b\s If b\h < max_hunger/2 Then Color 128,64,0 Else Color 255,0,0 Oval b\x,b\y,20,20 Color 255,0,0:Rect b\x-15,b\y-15,50-b\h*(50/max_hunger),5 Color 255,255,255:Rect b\x-15,b\y-15,50,5,0 If b\typ = 1 Then Text b\x+10,b\y+10,"W",1,1 Else Text b\x+10,b\y+10,"M",1,1 ;Color 255,255,255:Text b\x+10,b\y+10,b\,1,1 ;Line b\x+10,b\y+10,b\x+10+Cos(b\winkel+90)*20,b\y+10-Sin(b\winkel+90)*10 Ver = 0 For b2.info = Each info If RectsOverlap(b2\x,b2\y,20,20,b\x,b\y,20,20)=1 Then b\w = Rand(1,360) b2\w = Rand(1,360) If b2\typ = 0 And b\typ = 1 Or b2\typ = 1 And b\typ = 0 And b\ID <> b2\ID Then Ver = 1 b3.info = New info b3\x = b\x:b3\y = b\y b3\w = Rand(1,360)b3\winkel = 1:b3\s = Rand(min_speed,max_speed)b3\h = 0 b3\h_ms = MilliSecs()+Rand(1000,hunger_time):b\ms = MilliSecs()+Rand(min_time,max_time) b3\typ = Rand(0,1) b3\ID = ID:ID = ID + 1 EndIf EndIf Next For o.o = Each o If RectsOverlap(o\x,o\y,10,10,b\x,b\y,20,20) Then If b\h > 0 b\h = b\h - 2 If b\h < 0 Then b\h = 0 Delete o.o Count = Count - 1 EndIf EndIf Next If count > 0 And b\h > 0 o.o = First o If o.o <> Null b\w = ATan2(o\x-b\x,o\y-b\y)+180 EndIf EndIf If b\h > max_hunger Then Delete b.info:Tot = tot + 1 leben = leben + 1 Next For o.o = Each o Color 0,170,0:Oval o\x,o\y,10,10 If o\ms < MilliSecs() Then Delete o.o Next Color 255,255,255 Text 1,1 , "Lebende Insecten : "+leben Text 1,20,"Verhungerte Insecten : "+tot Text 1,40," Geld : "+Geld+" "+Ver Flip Cls Until KeyHit(1) End Warum vermeheren sich die Käfer net, wenn ein Weibchen "W" und ein Männchen "M" mit einander Collidieren ("If RectsOverlap(b2\x,b2\y,20,20,b\x,b\y,20,20)=1") ? Ich Check gar nichts mehr.... Ich hab schon eine Variable eingebaut, "Ver", die soll auf "1" gesetzt werden, wenn die Collision da ist und M und W einander Treffen. Ist aber immer Null, Tu ich sie hinter die Abfrage wo abgefragt wirt ob ein M und ein W miteinander Collidieren, ist sie immer Null, Tu ich sie davor, ist sie immer 1... Könnt ihr mir Helfen ? thx und mfg Crack93 |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
echi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
kannst du irgentwie die Bilder dazutun, ich hasse Zeichnen ![]() EDIT: ok, is ja nur ein bild^^ ich probiers jetz ma aus |
||
echi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok, bei dem Code vermehren sie sich jetzt unendlich ![]() ![]() Code: [AUSKLAPPEN] Graphics 800,600,16,2
SetBuffer BackBuffer() AppTitle "Das große Krabbeln" SeedRnd MilliSecs() Type info Field x#,y#,ms,w,winkel,s#,h_ms,h,typ,ID End Type Type o Field x,y,typ,ms End Type Dim K(30) Global b.info Global o.o Global max_speed=3,min_speed=1,max_time=3000,min_time=2000,hunger_time=5000,max_hunger = 10 Global count,tot = 0,leben = 0 Global Geld = 100,ID = 1 Global Kaefer = LoadImage("Kaefer.bmp") MaskImage Kaefer,255,0,255 MidHandle Kaefer For i = 0 To 29 K(i+1) = CopyImage(Kaefer) RotateImage K(i+1),i*12 Next b.info = New info b\x = Rand(1,780):b\y = Rand(1,580) b\w = Rand(1,360)b\winkel = 1:b\s = Rand(min_speed,max_speed)b\h = 0 b\h_ms = MilliSecs()+Rand(1000,hunger_time):b\ms = MilliSecs()+Rand(min_time,max_time) b\typ = 0 b\ID = 1 b2.info = New info b2\x = Rand(1,780):b\y = Rand(1,580) b2\w = Rand(1,360)b\winkel = 1:b\s = Rand(min_speed,max_speed)b\h = 0 b2\h_ms = MilliSecs()+Rand(1000,hunger_time):b\ms = MilliSecs()+Rand(min_time,max_time) b2\typ = 1 b2\ID = 2 Repeat If MouseHit(1) And Geld > 1 Then o.o = New o o\x = MouseX() o\y = MouseY() o\typ = 0 count = count + 1 o\ms = MilliSecs() + hunger_time*3 Geld = Geld - 2 EndIf leben = 0 For b.info = Each info If b\h_ms < MilliSecs() Then b\h = b\h + 1:b\h_ms = MilliSecs()+Rand(1000,hunger_time) If b\ms < MilliSecs() Or b\x+20 > 800 Or b\y+20 > 600 Or b\x < 1 Or b\y < 1 Then b\w = Rand(1,360):b\s = Rand(min_speed,max_speed):b\ms = MilliSecs() + Rand(min_time,max_time) If b\x+20 > 800 b\x = 780 b\w = Rand(0,180) b\winkel = b\w ElseIf b\y+20 > 600 b\y = 580 ww = Rand(1,2) If ww = 1 b\w = Rand(0,90) ElseIf ww = 2 b\w = Rand(270,360) b\winkel = b\w ElseIf b\x < 1 b\x = 1 b\w = Rand(180,360) b\winkel = b\w ElseIf b\y < 1 b\y = 1 b\w = Rand(90,270) b\winkel = b\w EndIf EndIf If b\winkel > b\w And b\winkel -180 < b\w Then b\winkel = b\winkel -2 If b\winkel > b\w And b\winkel -180 > b\w Then b\winkel = b\winkel +2 If b\winkel < b\w And b\winkel +180 < b\w Then b\winkel = b\winkel -2 If b\winkel < b\w And b\winkel +180 > b\w Then b\winkel = b\winkel +2 If b\winkel = b\w -180 Or b\winkel -180 = b\w Then b\winkel = b\winkel +2 If b\winkel < 1 Then b\winkel = 360 If b\winkel > 360 Then b\winkel = 1 b\x = b\x + Cos(b\winkel+90) * b\s b\y = b\y - Sin(b\winkel+90) * b\s If b\h < max_hunger/2 Then Color 128,64,0 Else Color 255,0,0 Oval b\x,b\y,20,20 Color 255,0,0:Rect b\x-15,b\y-15,50-b\h*(50/max_hunger),5 Color 255,255,255:Rect b\x-15,b\y-15,50,5,0 If b\typ = 1 Then Text b\x+10,b\y+10,"W",1,1 Else Text b\x+10,b\y+10,"M",1,1 ;Color 255,255,255:Text b\x+10,b\y+10,b\,1,1 ;Line b\x+10,b\y+10,b\x+10+Cos(b\winkel+90)*20,b\y+10-Sin(b\winkel+90)*10 Ver = 0 For b2.info = Each info If RectsOverlap(b2\x,b2\y,20,20,b\x,b\y,20,20)=1 Then b\w = Rand(1,360) b2\w = Rand(1,360) If b2\typ = 0 And b\typ = 1 Or b2\typ = 1 And b\typ = 0 And b\ID <> b2\ID Then DebugLog "haha" Ver = 1 b3.info = New info b3\x = b\x:b3\y = b\y b3\w = Rand(1,360)b3\winkel = 1:b3\s = Rand(min_speed,max_speed)b3\h = 0 b3\h_ms = MilliSecs()+Rand(1000,hunger_time):b\ms = MilliSecs()+Rand(min_time,max_time) b3\typ = Rand(0,1) b3\ID = ID:ID = ID + 1 EndIf EndIf Next For o.o = Each o If RectsOverlap(o\x,o\y,10,10,b\x,b\y,20,20) Then If b\h > 0 b\h = b\h - 2 If b\h < 0 Then b\h = 0 Delete o.o Count = Count - 1 EndIf EndIf Next If count > 0 And b\h > 0 o.o = First o If o.o <> Null b\w = ATan2(o\x-b\x,o\y-b\y)+180 EndIf EndIf If b\h > max_hunger Then Delete b.info:Tot = tot + 1 leben = leben + 1 Next For o.o = Each o Color 0,170,0:Oval o\x,o\y,10,10 If o\ms < MilliSecs() Then Delete o.o Next Color 255,255,255 Text 1,1 , "Lebende Insecten : "+leben Text 1,20,"Verhungerte Insecten : "+tot Text 1,40," Geld : "+Geld+" "+Ver Flip Cls Until KeyHit(1) End Du hattest nämlich garkein b2 ![]() |
||
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
aso cool danke funzt jetzt kann ich jetzt verbessern xD
thx und mfg Crack93 |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
echi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
kein Problem, aber ich geb dir mal nen Tipp: mach deine Quellcodes übersichtlicher! Ich musste bei nem Projekt von mir ganz neu anfangen, weil ich spagetticode programmiert hab^^ (noch nichmal so unordentlich wie deiner ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group