Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Treffquote im Kampf

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Xolios
aka Ray


Anmeldungsdatum: 07.12.2004
Beiträge: 589
Wohnort: Wildeshausen

BeitragVerfasst am: 18.06.2005, 11:59    Titel: Treffquote im Kampf Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen Yahoo Messenger MSN Messenger
A.K.



Anmeldungsdatum: 02.05.2005
Beiträge: 467
Wohnort: HH

BeitragVerfasst am: 18.06.2005, 12:32    Titel: Antworten mit Zitat

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...lächeln

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen Yahoo Messenger MSN Messenger
Xolios
aka Ray


Anmeldungsdatum: 07.12.2004
Beiträge: 589
Wohnort: Wildeshausen

BeitragVerfasst am: 18.06.2005, 12:41    Titel: .. Antworten mit Zitat

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 zwinkern

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 peinlich"
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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen Yahoo Messenger MSN Messenger
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 18.06.2005, 19:09    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2507
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 18.06.2005, 19:24    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 18.06.2005, 19:26    Titel: Antworten mit Zitat

Hallo.

Der Code ist für VisualBasic bis Version 6. zwinkern

Viele Grüße!
Sebastian
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 18.06.2005, 19:44    Titel: Antworten mit Zitat

Also wirklich, die erkennen kein VB grinsengrinsengrinsen

VB 6 is gut, aber ich habe damit noch nie versucht, ein SPIEL zu machen.... da braucht man ja DirectX sicher... missbilligen
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Xolios
aka Ray


Anmeldungsdatum: 07.12.2004
Beiträge: 589
Wohnort: Wildeshausen

BeitragVerfasst am: 18.06.2005, 19:45    Titel: Antworten mit Zitat

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 durchgeknallt )
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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen Yahoo Messenger MSN Messenger
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 18.06.2005, 20:26    Titel: Antworten mit Zitat

Jojo hat Folgendes geschrieben:
Also wirklich, die erkennen kein VB grinsengrinsengrinsen

VB 6 is gut, aber ich habe damit noch nie versucht, ein SPIEL zu machen.... da braucht man ja DirectX sicher... missbilligen



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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 19.06.2005, 19:17    Titel: Antworten mit Zitat

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 lächeln

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Xolios
aka Ray


Anmeldungsdatum: 07.12.2004
Beiträge: 589
Wohnort: Wildeshausen

BeitragVerfasst am: 20.06.2005, 18:59    Titel: Antworten mit Zitat

Hallo.

Ich hab das Kampfsystem schon für mehr einheiten optimiert.
Das heißt auf unendlich viele... lächeln

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. grinsen

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen Yahoo Messenger MSN Messenger
code



Anmeldungsdatum: 19.01.2005
Beiträge: 154

BeitragVerfasst am: 20.06.2005, 19:33    Titel: Antworten mit Zitat

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 zwinkern )
bei anderen webservern ist das zum teil aber egal.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Xolios
aka Ray


Anmeldungsdatum: 07.12.2004
Beiträge: 589
Wohnort: Wildeshausen

BeitragVerfasst am: 21.06.2005, 14:52    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen Yahoo Messenger MSN Messenger
hawkeye78



Anmeldungsdatum: 04.05.2005
Beiträge: 6
Wohnort: Castrop-Rauxel

BeitragVerfasst am: 23.06.2005, 16:37    Titel: Antworten mit Zitat

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 zwinkern. Ansonsten bin ich echt beeindruckt was du bis jetzt geleistet hast lächeln
Viele Grüsse
Dan
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Progger_X
Mr. Lagg


Anmeldungsdatum: 24.11.2004
Beiträge: 784
Wohnort: Leipzig

BeitragVerfasst am: 23.06.2005, 17:19    Titel: Re: Treffquote im Kampf Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Xolios
aka Ray


Anmeldungsdatum: 07.12.2004
Beiträge: 589
Wohnort: Wildeshausen

BeitragVerfasst am: 26.06.2005, 13:46    Titel: Antworten mit Zitat

Hallo.

Klar darfst du fragen lächeln

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen Yahoo Messenger MSN Messenger
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz