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, 12: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, 13: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, 13: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, 20: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: 2507 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 18.06.2005, 20: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, 20: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, 20: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, 21: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, 20: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, 19: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, 10:25, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
code
Anmeldungsdatum: 19.01.2005 Beiträge: 154
|
Verfasst am: 20.06.2005, 20: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, 15: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, 17: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, 18: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, 14: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 |
|
|
|