118551
Goto Top

Genaue Prozent Rechnung!

Hallo Leute

Ich möchte in einen Spiel eine Prozentrechnung der vorhandenen Leben Haben
also habe ich ein Test mit batch gestartet und bemerkt das batch die Komma stellen
nicht berücksichtigt. Nun stellt sich mir die frage wie kann ich so was implementieren ohne
die übersieht zu verlieren!

Ihr könnt auch auf vbs etc. Ausweichen wichtig sind mir 2 bis 4 stellen mindestens nach dem Komma!!!
(Man Kann es nicht nur fürs Spiel verwenden!)

Danke im voraus

LG DomiZone1

Content-Key: 254272

Url: https://administrator.de/contentid/254272

Printed on: April 24, 2024 at 16:04 o'clock

Mitglied: 114757
114757 Nov 08, 2014 updated at 16:40:41 (UTC)
Goto Top
Mitglied: 118551
118551 Nov 09, 2014 at 21:47:35 (UTC)
Goto Top
Sorry Aber ich brauche das bei einen aktiven Skript der sich wiederholt und abändern des vbs ist mir aktuell zu kompliziert
Acutng Extrem Abgespeckter Code
Code:
@echo off
echo ---------------------------------------------------------------
echo  das hier ist leider nur eine Demo es gibt nur eine runde!!!
echo ---------------------------------------------------------------
ping -n 2 127.0.0.1>nul
cls
set Y=1000
set N=1000
set turn=--)
:Reset
cls
::Und Hier sollen die HP in Prozent umgerechnet werden
::LEQ bedeutet gleich oder weniger als ... und ist wie: == nur das das nur gleich bedeutet
if %Y% LEQ 0 goto You_lose
if %N% LEQ 0 goto You_win
echo ---------------------------------------------------------------------------
echo    %Y%                                                                %N%
echo ---------------------------------------------------------------------------
if %turn%==--) set /A Y=%Y%-%random% %%150 && set turn=(-- && ping -n 2 127.0.0.1>nul && goto Reset
if %turn%==(-- set /A N=%N%-%random% %%150 && set turn=--) && ping -n 2 127.0.0.1>nul && goto Reset
:You_lose
echo Du hast verloren
pause>nul
exit
:You_win
echo du hast gewonnen
pause>nul
exit

Ich brauche auf jeden fall mehr variablen die sind im richtigen Code aber vorhanden
aber den füge ich wegen der gösse nicht ein. Außerdem sind da ASCII Zeichen drin und ich weiß nicht ob ihr das auf OEM852
ändern könnt!


LG DomiZone1

PS: Die Größe ist (6372 Zeichen 121 Zeilen und 4,43 KB)
Member: rubberman
rubberman Nov 09, 2014 at 22:11:22 (UTC)
Goto Top
Hallo DomiZone1.

::Und Hier sollen die HP in Prozent umgerechnet werden
Was sind denn HP und um welche konkreten Werte geht es?

Selbst wenn du diese Werte mit Nachkommastellen hast, kennt Batch immer noch keine Fließkommazahlen. Das heißt auch ein numerischer Vergleich ist nicht möglich.

Wenn es darum geht zu vergleichen, dann verrücke dein Komma (durch Anhängen von Nullen am Divident). Ob nun 100 % zu 25,3412 % verglichen wird (was in Batch nicht funktioniert) oder aber 1000000 zu 253412 (was in Batch sehr wohl funktioniert) ist doch völlig egal.

Grüße
rubberman
Mitglied: 118551
118551 Nov 09, 2014 at 22:24:06 (UTC)
Goto Top
HP sind HealthPoints oder LebensPunkt Die HP Sind die variablen Y und N
und die beiden sollen in Prozent umgerechnet werden
also statt das ich 1000 sehe das die hp dar stellt will ich das in 100% sehen sofern das 100% sind

LG DomiZone1
Member: rubberman
rubberman Nov 09, 2014 updated at 23:06:16 (UTC)
Goto Top
Hallo DomiZone1,

dann schreibe dir halt eine Subroutine die die Berechnung so ausführt, wie ich es oben angemerkt habe und anschließend das Komma per Stringmanipulation hinein editiert.
@echo off &setlocal
set /a "Y=500"  
set /a "N=7"  
call :toPercent 1000 %Y% pY
call :toPercent 1000 %N% pN
echo %pY% %%
echo %pN% %%
pause
exit /b

:toPercent
setlocal
set /a "prozentsatz=%~2 * 1000000 / %~1"  
set "prozentsatz=000000%prozentsatz%"  
set "prozentsatz=1%prozentsatz:~-7%"  
set /a "vorkomma=%prozentsatz:~0,4% %% 1000"  
endlocal &set "%~3=%vorkomma%,%prozentsatz:~-4%"  
exit /b
:toPercent wird mit dem Grundwert, dem Prozentwert und dem Variablenname für den Prozentsatz als Argumente gefüttert.

Sinn macht das trotzdem nicht, weil du nicht numerisch mit den erhaltenen Werten weiter arbeiten kannst. (Aber das hatte ich ja oben bereits geschrieben ...)

Grüße
rubberman
Mitglied: 118551
118551 Nov 10, 2014 at 00:59:58 (UTC)
Goto Top
Danke Deine Lösung ist gut aber... leider geht mein batch Spiel sehr gerne ins minus (Fast immer)
und da hat deine Lösung leider einen haken es stört das Skript nicht wirklich ist aber nervig
wenn oben plötzlich Fehlender Operand steht kennst du oder irgendwer anders vielleicht eine Lösung die auch im negativen
funktioniert Ihr Könnt auch vbs nehmen!
Auser vbs kann auch nicht ins negative das muss es nämlich weil die Schwierigkeiten im richtigem Spiel
damit arbeiten müssen wenn die HP variablen ins minus gehen!!!
Weil Rechnungen für den nächsten Start des Kampfes

LG DomiZone1
Member: rubberman
Solution rubberman Nov 10, 2014 updated at 15:24:46 (UTC)
Goto Top
Hallo DomiZone1.

Ihr Könnt auch vbs nehmen!
Diese Lösung hast du ja bereits bekommen ...

leider geht mein batch Spiel sehr gerne ins minus (Fast immer)
Das ist immer so, wenn man versucht mit Batch Spiele zu entwickeln. Der Ausgang ist zu 99,999 % negativ face-wink

@echo off &setlocal
set /a "Y=500"  
set /a "N=-7"  
call :toPercent 1000 %Y% pY
call :toPercent 1000 %N% pN
echo %pY% %%
echo %pN% %%
pause
exit /b

:toPercent
setlocal
set /a "prozentsatz=%~2 * 1000000 / %~1"  
set "vorzeichen="  
if %prozentsatz% lss 0 (
  set "vorzeichen=-"  
  set /a "prozentsatz*=-1"  
)
set "prozentsatz=000000%prozentsatz%"  
set "prozentsatz=1%prozentsatz:~-7%"  
set /a "vorkomma=%prozentsatz:~0,4% %% 1000"  
endlocal &set "%~3=%vorzeichen%%vorkomma%,%prozentsatz:~-4%"  
exit /b

Grüße
rubberman
Mitglied: 118551
118551 Nov 10, 2014 at 15:29:56 (UTC)
Goto Top
Danke rubberman

Deine Lösung ist wie ich es mir vorgestellt habe und funktioniert jetzt 100% mit meinen Skript
endlich hab ich die Lösung

LG DomiZone1