# Einarmiger Bandit als JSP Projekt



## Killerpics (24. Jan 2011)

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.


```
<%--
    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 (24. Jan 2011)

```
<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 
	
	
	
	





```
readonly
```
 anstatt von 
	
	
	
	





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


----------



## killerpics (24. Jan 2011)

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.


----------

