Einarmiger Bandit als JSP Projekt

K

Killerpics

Gast
Hallo,

Wir haben die Hausaufgabe aufbekommen ein Glücksspiel als JSP Projekt anzufertigen.
Ich habe mich für den Einarmigen Banditen entschieden und bin gut voran gekommen, leider hakt es jetzt bei der Coin Berechnung sobald der Spieler den Einsatz leer lässt oder 0 ein gibt werden die Coins neu Initialisiert und auf 100 gesetzt.
Vielleicht übersehe ich auch etwas und brauche nur einen Tipp.
Schon mal danke im Voraus.

Java:
<%--
    Document   : index
    Created on : 10.01.2011, 09:37:32
    
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Auf und Ab</title>
    </head>
    <%!
        // Wandelt eine Zeichenkette in eine double-Zahl um
        public static double sToD(String s) {
            if (s == null) {
                return Double.NaN;
            }
            double d;
            s = s.trim();
            if (s.equals("")) {
                s = "0";
            }
            s = s.replace(',', '.');
            try {
                d = Double.parseDouble(s);
            } catch (NumberFormatException e) {
                d = Double.NaN;
            }
            return d;
        }
    %>



    <%

                String einsatz = request.getParameter("einsatz");
                String zufall = request.getParameter("zufall");
                String zufall1 = request.getParameter("zufall1");
                String zufall2 = request.getParameter("zufall2");
                String button = request.getParameter("button");
                String coins = request.getParameter("coins");

                double dEinsatz = sToD(einsatz);
                double dCoins = sToD(coins);


                int iCoins = 100;
                int iEinsatz = 0;




                if (!Double.isNaN(dEinsatz)) {
                    iEinsatz = (int) dEinsatz;
                } else {
                    out.println("nan");
                }

                if (!Double.isNaN(dCoins)) {
                    iCoins = (int) dCoins;
                } else {
                }



                if (iEinsatz <= iCoins) {
                    if (iCoins > 0) {


                        zufall = "" + (int) (Math.random() * 10 + 1);
                        zufall1 = "" + (int) (Math.random() * 10 + 1);
                        zufall2 = "" + (int) (Math.random() * 10 + 1);
                        //if (button.equals("Neues Spiel"))
                        //  {

                        if (zufall.equals(zufall1) && zufall.equals(zufall2)) {
                            iCoins = iCoins + (iEinsatz * 4);
                        } else {
                            if (zufall.equals(zufall1) || zufall.equals(zufall2) || zufall1.equals(zufall2)) {
                                iCoins = iCoins + (iEinsatz * 2);
                            } else {
                                iCoins = iCoins - iEinsatz;
                            }
                        }
                    } else {
                        out.println("Sie haben verloren");



    %>




    <form action="index.jsp">
        <input type="submit" value="Neustarten" name="reset" />

    </form>



    <%
                    }
                } else {
                    out.println("Sie können nicht mehr Einsetzen als sie besitzen.");


                }
%>
    <body>
        <form action="index.jsp" method="post">


            <table>
                <thead>
                    <tr>
                        <th>Coins:<input disabled="disabled" name="coins" value="<%=iCoins%>"/></th>
                        <th>&nbsp;</th>
                    </tr>
                </thead>
            </table>
            <table>

                <thead>
                    <tr>

                        <td><font>Ihre zahlen:</font></td>
                        <td><input disabled="disabled" name="zufall" value="<%=zufall%>" /></td>
                        <td><input disabled="disabled" name="zufall1" value="<%=zufall1%>" /></td>
                        <td><input disabled="disabled" name="zufall2" value="<%=zufall2%>" /></td>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>Bitte wählen sie ihren Einsatz:</td>
                        <td><input name="einsatz" value=""/></td>
                        <td></td>
                    </tr>
                    <tr>
                        <td><input type="submit" value="Start" name="button" /></td>
                        <td></td>
                        <td></td>
                    </tr>
                </tbody>
            </table>


            <input type="submit" value="Start" name="button" />

        </form>
    </body>
</html>
 

tagedieb

Top Contributor
HTML:
<input disabled="disabled" name="coins" value="<%=iCoins%>"/>


Wenn du ein Inputfeld auf disabled setzt wird es nicht an den Server uebermittelt. Ergo kann er die Coins nicht parsen und setzt es zurueck auf 100. Das Problem hat nichts mit dem Einsatz zu tun, sondern tritt jedesmal auf.

Verwende
Code:
readonly
anstatt von
Code:
disabled
. Siehe hier

PS. Wenn die Coins als Requestparameter uebergeben werden koennen diese vom User manipuliert werden. Eventuell solltest du die Coins in der Session oder als Cookie (verschluesselt) speichern.
 
K

killerpics

Gast
Danke für den Tipp mit "readonly" Funktioniert es. Wäre ich nie drauf gekommen naja vllt. wird uns das ja heute beigebracht...
Das das Spiel nicht Manipulationssicher ist weiß ich, wird erstmal kein Wert vom Lehrer darauf gelegt.


Trotzdem ein Dickes Danke.
 


Schreibe deine Antwort... und nutze den </> Button, wenn du Code posten möchtest...

Neue Themen


Oben