| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen   | 
	
	
	
		| Autor | 
		Nachricht | 
	
	
		Xolios aka Ray
  
  Anmeldungsdatum: 07.12.2004 Beiträge: 589 Wohnort: Wildeshausen
  | 
		
			
				 Verfasst am: 18.06.2005, 11:59    Titel: Treffquote im Kampf | 
				     | 
			 
			
				
  | 
			 
			
				Hallo.
 
 
Ich entwickle gerade ein Netzwerkspiel und
 
hab so das Gefühl das in der Trefferquote was net stimmt.
 
 
z.B.
 
Wenn Trefferquote=100 dann immer treffen
 
Wenn Trefferquote= 50 dann eingeschränkt
 
Wenn Trefferquote= 25 .....
 
...
 
 
Ich handhabe das im moment so:
 
 
treffer = Int(Rnd * 100) - 1
 
 
If treffer = trefferchance Or treffer > trefferchance Then
 
'Spieler hat getroffen
 
Else
 
'Spieler Schlägt daneben!"
 
end If
 
 
 
Hoffe auf Verbesserungsvorschläge!
 
 
Danke im Voraus!
 
 
Gruß
 
Ray _________________ www.ray-earth.de
 
Anm.: Neue ICQ | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		A.K.
 
  
  Anmeldungsdatum: 02.05.2005 Beiträge: 467 Wohnort: HH
  | 
		
			
				 Verfasst am: 18.06.2005, 12:32    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Hi,
 
 
ich würde es wie folgt machen:
 
 
du weist deinem Spieler/Figur eine Trefferquote zu. (Hast du ja schon)
 
Und dem Gegner weist du eine "Trefferabwehrquote" zu.
 
 
Beide liegen z.B. im Bereich 0-100.
 
 
Dann kann man folgendes machen:
 
 
gesamtquote = trefferquote + abwehrquote
 
ergebnis=int(rnd*gesamtquote)
 
if ergebnis<= trefferquote then
 
'getroffen
 
else
 
nicht getroffen
 
end if
 
 
Mal ein paar Rechenbeispiele:
 
trefferquote = 100
 
abwehrquote = 1
 
gesamtquote wäre dann 101
 
Der Zufallsgenerator wird dann mit ca. 99% Wahrscheinlichkeit den "Bereich" deiner Trefferquote erwischen und du hast getroffen.
 
 
bei folgendem:
 
 
trefferquote=50
 
abwehrquote=50
 
gesamtquote=100
 
Hier ist die Wahrscheinlichkeit 50% das du deine Trefferquote erwischst.
 
 
Ich hoffe das hat jemand verstanden... 
 
 
Damits mans besser versteht kann man "trefferquote" auch durch Angriffsstärke ersetzen und "abwehrquote" durch Verteidungsstärke.
 
 
MFG A.K. _________________
   
 
http://forum.IconSoft.de 
 
http://www.pnpbb.de - hol dir jetzt dein eigenes kostenloses Forum *NEU* | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		Xolios aka Ray
  
  Anmeldungsdatum: 07.12.2004 Beiträge: 589 Wohnort: Wildeshausen
  | 
		
			
				 Verfasst am: 18.06.2005, 12:41    Titel: .. | 
				     | 
			 
			
				
  | 
			 
			
				Hallo.
 
 
Danke A.K.
 
 
Ich werd einfach mal das Kampfsystem hier posten.
 
Viel Spaß beim "Lesen"
 
Is etwas dumm geproggt aber es funzt!
 
Bin sowieso noch am entwickeln  
 
 
 	  | Code: | 	 		  
 
ang1 = 10
 
rus1 = 0
 
treff1 = 100
 
kp1 = 50
 
 
ang2 = 10
 
rus2 = 0
 
treff2 = 100
 
kp2 = 50
 
 
tmpkp1 = kp1
 
tmpkp2 = kp2
 
 
tmpanz1 = Text1.Text
 
tmpanz2 = Data(1)
 
 
frmkampf.Label13.Caption = "Server Arbeitet..."
 
 
gamer1:
 
PAUSE 0.001
 
With frmkampf
 
.angkp = tmpkp1
 
.verkp = tmpkp2
 
End With
 
 
tmprus1 = rus1
 
tmprus2 = rus2
 
If tmpkp2 = 0 Or tmpkp2 < 0 Then GoTo totg2
 
If tmpkp1 = 0 Or tmpkp1 < 0 Then GoTo totg1
 
 
z1% = Int(Rnd * 100) - 1
 
 
If z1% = zuf1 Or z1% > zuf1 Then
 
Else
 
frmkampf.Text1.Text = frmkampf.Text1.Text & vbCrLf & "Spieler 1 Schlägt daneben!"
 
GoTo gamer2
 
End If
 
 
If ang1 = tmprus2 Then GoTo gamer2
 
If ang1 > tmprus2 Then ftst = ang1 - tmprus2: GoTo ageg
 
If ang1 < tmprus2 Then ftst = 0
 
 
ageg:
 
tmpkp2 = tmpkp2 - ftst
 
 
 
gamer2:
 
 
tmprus1 = rus1
 
tmprus2 = rus2
 
If tmpkp2 < 0 Or tmpkp2 = 0 Then GoTo totg2
 
If tmpkp1 < 0 Or tmpkp1 = 0 Then GoTo totg1
 
 
z2% = Int(Rnd * 100) - 2
 
 
If z2% = zuf2 Or z2% > zuf2 Then
 
 
Else
 
frmkampf.Text1.Text = frmkampf.Text1.Text & vbCrLf & "Spieler 2 Schlägt daneben!"
 
GoTo gamer1
 
End If
 
 
If ang2 = tmprus1 Then GoTo gamer1
 
If ang2 > tmprus1 Then ftst = ang2 - tmprus1: GoTo ageg1
 
If ang2 < tmprus1 Then ftst = 0
 
 
ageg1:
 
tmpkp1 = tmpkp1 - ftst
 
 
GoTo gamer1
 
 
totg1:
 
tmpanz1 = tmpanz1 - 1
 
frmkampf.angve = tmpanz1
 
If tmpanz1 = 0 Then
 
Timer1.Interval = 0
 
PAUSE 1
 
frmbattle.tcp.SendData ("Spieler2iswinner")
 
PAUSE 1
 
frmbattle.tcp.SendData ("open")
 
PAUSE 1
 
MsgBox "Sie haben verloren!", vbCritical, "Niederlage  "
 
frmfußvolk.Label5 = frmfußvolk.Label5 + tmpanz1
 
Unload Me
 
Unload frmkampf
 
Unload frmbattle
 
frmmain.Show
 
Exit Sub
 
Else
 
tmpkp1 = kp1
 
GoTo gamer2
 
End If
 
'PAUSE 1
 
GoTo gamer2
 
 
totg2:
 
tmpanz2 = tmpanz2 - 1
 
frmkampf.verve = tmpanz2
 
If tmpanz2 = 0 Then
 
einheitFUßS1 = einheitFUßS1 + tmpanz1
 
frmfußvolk.Label5 = frmfußvolk.Label5 + tmpanz1
 
Timer1.Interval = 0
 
PAUSE 1
 
frmbattle.tcp.SendData ("Spieler1iswinner")
 
PAUSE 1
 
frmbattle.tcp.SendData ("open")
 
PAUSE 1
 
MsgBox "Sie haben Gewonnen!", vbInformation, "Sieg!"
 
Unload Me
 
Unload frmkampf
 
Unload frmbattle
 
frmmain.Show
 
Unload frmkampf
 
Exit Sub
 
Else
 
tmpkp2 = kp2
 
GoTo gamer1
 
End If
 
GoTo gamer1
 
 
fehler:
 
MsgBox "Die Verbindung wurde unterbrochen.", vbExclamation, "Daten konnten nicht gesendet werden."
 
Unload Me
 
Unload frmkampf
 
Unload frmbattle
 
Timer3.Interval = 0
 
frmmain.Show
 
Unload frmkampf
 
 
End Sub
 
 
Private Sub Command2_Click()
 
On Error GoTo fehler
 
frmbattle.tcp.SendData ("open")
 
frmbattle.Show
 
frmbattle.Timer1.Interval = 1000
 
Unload frmblack
 
Unload Me
 
Exit Sub
 
 
fehler:
 
MsgBox "Fehler bei Befehl senden.", vbCritical, "Fehler"
 
frmbattle.Show
 
frmbattle.Timer1.Interval = 1000
 
Unload frmblack
 
Unload Me
 
 | 	  
 
 
Verbesserungsvorschläge?
 
 
Gruß
 
Ray _________________ www.ray-earth.de
 
Anm.: Neue ICQ | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		Michael712 aka anfänger, programmierer
 
  Anmeldungsdatum: 26.03.2005 Beiträge: 1593
 
  | 
		
			
				 Verfasst am: 18.06.2005, 19:09    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Ich hab mal ne Frage: Ist das QBasic?? Das sieht mehr nach freebasic aus, denke ich. (ich kenn nur qbasic) Befehle wie "Pause 1" gibts bei Qbasic doch garnicht.
 
 
 
Falls es Freebasic ist: Bitte verschieben!!!!(ins freebasic forum)
 
 
 
Mfg
 
Michael | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		dreael Administrator
  
  Anmeldungsdatum: 10.09.2004 Beiträge: 2531 Wohnort: Hofen SH (Schweiz)
  | 
		
			
				 Verfasst am: 18.06.2005, 19:24    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | anfänger hat Folgendes geschrieben: | 	 		  | Falls es Freebasic ist: Bitte verschieben!!!!(ins freebasic forum) | 	  
 
Schon erledigt. :-) Schliesslich wäre auch Socketprogrammierung in QB viel komplizierter als in FreeBasic, wo man bequem auf WINSOCK.DLL zurückgreifen kann. _________________ Teste die PC-Sicherheit mit www.sec-check.net | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		Sebastian Administrator
  
  Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
  | 
		 | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		Jojo alter Rang
  
  Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
  | 
		
			
				 Verfasst am: 18.06.2005, 19:44    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Also wirklich, die erkennen kein VB    
 
 
VB 6 is gut, aber ich habe damit noch nie versucht, ein SPIEL zu machen.... da braucht man ja DirectX sicher...   _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 
  | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		Xolios aka Ray
  
  Anmeldungsdatum: 07.12.2004 Beiträge: 589 Wohnort: Wildeshausen
  | 
		
			
				 Verfasst am: 18.06.2005, 19:45    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Hallo.
 
 
Sebastian hats erfasst! :-d
 
 
Die grundlegende Frage war ja das Zufallsprinzip (in QB geproggt)
 
 
Alles ist in Qbasic entstanden und wurde auf 
 
Visual Studio 6 Enterprise Edition (für die die es genau wissen wollen)
 
übertragen.
 
 
Da mein altes Game nur auf 1 Einheit basis basierte musste
 
ich es neu Anfangen und habe es auf unendlich viele Einheiten
 
erweitert.
 
 
Jetzt geht es mir um vereinfachungen oder Fehler im kampfsystem.
 
 
Gruß
 
Ray
 
 
nachtrag: (musste Jojo so spät schreiben    )
 
siehe:
 
http://forum.qbasic.ch/viewtopic.php?t=688&start=20&sid=e771aba809991e8be0c5021e4b696a5b
 
 
Da sind auch Screens vom vorherigen Spiel was "Restartet" wird. _________________ www.ray-earth.de
 
Anm.: Neue ICQ | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		Michael712 aka anfänger, programmierer
 
  Anmeldungsdatum: 26.03.2005 Beiträge: 1593
 
  | 
		
			
				 Verfasst am: 18.06.2005, 20:26    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | Jojo hat Folgendes geschrieben: | 	 		  Also wirklich, die erkennen kein VB    
 
 
VB 6 is gut, aber ich habe damit noch nie versucht, ein SPIEL zu machen.... da braucht man ja DirectX sicher...   | 	  
 
 
 
Ich habe noch NIE (bis auch das jetzige programm) ein VB programmcode gesehen. Sonst hätte ich das bestimmt auch erkannt.
 
 
Mfg
 
Michael | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		jb
 
  
  Anmeldungsdatum: 14.01.2005 Beiträge: 2010
 
  | 
		
			
				 Verfasst am: 19.06.2005, 19:17    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Ich würde da an deiner Stelle anstatt z.B. ang1 und ang2 oder rus1 und rus2 Arrays nehmen.
 
 
Dann kannst du auch ein paarGegner mehr einbauen, ohne dass
 
du direkt für jeden Gegner 20 Zeilen mehr schreiben musst  
 
 
jb | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		Xolios aka Ray
  
  Anmeldungsdatum: 07.12.2004 Beiträge: 589 Wohnort: Wildeshausen
  | 
		
			
				 Verfasst am: 20.06.2005, 18:59    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Hallo.
 
 
Ich hab das Kampfsystem schon für mehr einheiten optimiert.
 
Das heißt auf unendlich viele...   
 
 
Ich bin gearde fleißig am weiterproggen und nehme das Style
 
von Steam:
 
Schon ma ein paar Screens:
 
 
http://home.arcor.de/minisoft/1.JPG
 
http://home.arcor.de/minisoft/2.JPG
 
 
Ist noch nichts besonderers aber wenn die Struktur fertig
 
ist hab ich unendlich viele möglichkeiten vom Aussehen her.
 
 
Codeverbesserungen und vorzeitige Bewertungen
 
zu den Screens wären sehr nett.    
 
 
Gruß
 
Ray
 
 
€dit:
 
Merkwürdigerweise funzen die Links net...
 
Ma Die Bilder dirket Probieren...
 
 
2. €dit:
 
So jetzt müsste es funktionieren... _________________ www.ray-earth.de
 
Anm.: Neue ICQ
  Zuletzt bearbeitet von Xolios am 21.06.2005, 09:25, insgesamt einmal bearbeitet | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		code
 
 
  Anmeldungsdatum: 19.01.2005 Beiträge: 154
 
  | 
		
			
				 Verfasst am: 20.06.2005, 19:33    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				beim webspace von arcor muss man aufpassen. der nimmt die groß und kleinschreibung besonders genau. die bilder die du abgespeichert hast, heißen 1.JPG aber im link steht 1.jpg (habs ausprobiert   )
 
bei anderen webservern ist das zum teil aber egal. | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		Xolios aka Ray
  
  Anmeldungsdatum: 07.12.2004 Beiträge: 589 Wohnort: Wildeshausen
  | 
		
			
				 Verfasst am: 21.06.2005, 14:52    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Hallo.
 
 
Die Links funzen jetzt...danke Code & Mecki der mich per PM drauf aufmerksam gemacht hat.
 
 
Gruß
 
Ray _________________ www.ray-earth.de
 
Anm.: Neue ICQ | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		hawkeye78
 
 
  Anmeldungsdatum: 04.05.2005 Beiträge: 6 Wohnort: Castrop-Rauxel
  | 
		
			
				 Verfasst am: 23.06.2005, 16:37    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Hallo,
 
 
zum einen möchte ich ungern klugscheissen und zum anderen bin ich mir nicht ganz so sicher ob Du nur analytische Verbesserung deines Algorithmuses suchst. Aber bei durch schauen deines Algorithmuses sind mir zwei Stellen besonders aufgefallen zum einen
 
 	  | Code: | 	 		  
 
If z1% = zuf1 Or z1% > zuf1 Then 
 
Else 
 
frmkampf.Text1.Text = frmkampf.Text1.Text & vbCrLf & "Spieler 1 Schlägt daneben!" 
 
GoTo gamer2 
 
End If
 
 | 	  
 
sowie zum anderen
 
 	  | Code: | 	 		  
 
If z2% = zuf2 Or z2% > zuf2 Then 
 
 
Else 
 
frmkampf.Text1.Text = frmkampf.Text1.Text & vbCrLf & "Spieler 2 Schlägt daneben!" 
 
GoTo gamer1 
 
End If
 
 | 	  
 
 
Ich finde etwas etwas unnötig einen else-Zweig zu implementieren, wenn der If-Zweig nicht belegt ist. Es ist zwar keine große Veränderung, aber ich finde es ist ein nicht so ganz schöner Stil.
 
Ich hoffe ich war jetzt nicht zu oberlehrerhaft  . Ansonsten bin ich echt beeindruckt was du bis jetzt geleistet hast  
 
Viele Grüsse
 
Dan | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		Progger_X Mr. Lagg
 
  Anmeldungsdatum: 24.11.2004 Beiträge: 784 Wohnort: Leipzig
  | 
		
			
				 Verfasst am: 23.06.2005, 17:19    Titel: Re: Treffquote im Kampf | 
				     | 
			 
			
				
  | 
			 
			
				 	  | Ray hat Folgendes geschrieben: | 	 		  Ich entwickle gerade ein Netzwerkspiel und
 
hab so das Gefühl das in der Trefferquote was net stimmt. | 	  
 
 
Auch wenns nicht zum Thread passt: darf ich fragen, wie du die Daten überträgst? | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		Xolios aka Ray
  
  Anmeldungsdatum: 07.12.2004 Beiträge: 589 Wohnort: Wildeshausen
  | 
		
			
				 Verfasst am: 26.06.2005, 13:46    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Hallo.
 
 
Klar darfst du fragen  
 
 
Is ja mit Visual Studio geproggt und die Daten werden mit
 
dem:
 
Microsoft Winsock Control 6.0 (SP6)
 
übertragen.
 
 
Gruß
 
Ray _________________ www.ray-earth.de
 
Anm.: Neue ICQ | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		 |