Project Code Start{"clazzes":[{"name":"NimKI","src":"class NimKI {\n static KI ki1, ki2;\n static Zug letzterZug;\n static int count=11;\n \n static Spiel spiel;\n static void start( ) {\n ki1 = new KI( NimKI.count );\n ki2 = new KI( NimKI.count );\n Trainingsscreen.hide( );\n Spielscreen.hide( );\n Startscreen.spielen.addActionListener( ( ev ) -> {\n Startscreen.hide( );\n Spielscreen.show( );\n spiel = new Spiel( NimKI.count );\n letzterZug = null;\n Spielscreen.ende.hide( );\n Spielscreen.weiter.hide( );\n Spielscreen.nehmen.show( );\n updateSpiel( );\n if(Math.random()<0.5){\n spielerZug(0);\n }\n } );\n Spielscreen.nimm1.addActionListener( ( ev ) -> {\n spielerZug( 1 );\n } );\n Spielscreen.nimm2.addActionListener( ( ev ) -> {\n spielerZug( 2 );\n } );\n Spielscreen.nimm3.addActionListener( ( ev ) -> {\n spielerZug( 3 );\n } );\n Spielscreen.weiterButton.addActionListener( ( ev ) -> {\n kiZug( );\n } );\n Spielscreen.zurueck.addActionListener( ( ev ) -> {\n Spielscreen.hide( );\n Startscreen.show( );\n } );\n Startscreen.trainieren.addActionListener( ( ev ) -> {\n Startscreen.hide( );\n Trainingsscreen.show( );\n } );\n Trainingsscreen.zurueck.addActionListener( ( ev ) -> {\n Trainingsscreen.hide( );\n Startscreen.show( );\n } );\n Trainingsscreen.starten.addActionListener( ( ev ) -> {\n trainieren( );\n updateKITabellen( );\n } );\n Trainingsscreen.setback1.addActionListener( ( ev ) -> {\n ki1 = new KI( NimKI.count );\n updateKITabellen( );\n } );\n Trainingsscreen.setback2.addActionListener( ( ev ) -> {\n ki2 = new KI( NimKI.count );\n updateKITabellen( );\n } );\n Trainingsscreen.loeschen.addActionListener( ( ev ) -> {\n clear( );\n } );\n updateKITabellen( );\n }\n \n static void trainieren( ) {\n Spiel spiel = new Spiel( NimKI.count );\n spiel.spielen( ki1, ki2 );\n }\n \n static void updateKITabellen( ) {\n String t = ki1.getTabelle( );\n Trainingsscreen.tabelle1.setValue( t );\n t = ki2.getTabelle( );\n Trainingsscreen.tabelle2.setValue( t );\n }\n \n static void clear( ) {\n Trainingsscreen.spielablauf.setValue( \"\" );\n }\n \n static void updateHoelzer( ) {\n String t = \"\";\n for ( int i = 0; i < spiel.anzahlHoelzer; i++ ) {\n t += \"| \";\n }\n for ( int i = spiel.anzahlHoelzer; i < NimKI.count; i++ ) {\n t += \" \";\n }\n Spielscreen.hoelzer.setValue( t );\n }\n \n static void spielerZug( int anzahl ) {\n spiel.nehmen( anzahl );\n Spielscreen.nehmen.hide( );\n if ( spiel.anzahlHoelzer == 0 ) {\n Spielscreen.ende.show( );\n Spielscreen.endeNachricht.setValue( \"Du hast verloren.\" );\n } else {\n Spielscreen.weiter.show( );\n Zug z = ki1.zugMachen( spiel.anzahlHoelzer );\n Spielscreen.kiZug.setValue( \"Die KI nimmt \" + z.genommen );\n letzterZug = z;\n }\n updateSpiel( );\n }\n \n static void kiZug( ) {\n spiel.nehmen( letzterZug.genommen );\n Spielscreen.weiter.hide( );\n if ( spiel.anzahlHoelzer == 0 ) {\n Spielscreen.ende.show( );\n Spielscreen.endeNachricht.setValue( \"Du hast gewonnen.\" );\n } else {\n Spielscreen.nehmen.show( );\n }\n updateSpiel( );\n }\n \n static void updateSpiel( ) {\n updateHoelzer( );\n Spielscreen.nimm1.setEnabled( true );\n Spielscreen.nimm2.setEnabled( true );\n Spielscreen.nimm3.setEnabled( true );\n if ( spiel.anzahlHoelzer < 3 ) {\n Spielscreen.nimm3.setEnabled( false );\n }\n if ( spiel.anzahlHoelzer < 2 ) {\n Spielscreen.nimm2.setEnabled( false );\n }\n }\n \n static void println( String text ) {\n String old = Trainingsscreen.spielablauf.getValue( );\n if ( old.length( ) > 0 ) old += \"\\n\";\n Trainingsscreen.spielablauf.setValue( old + text );\n }\n \n public static void main( String[ ] args ) {\n System.console( ).hide( );\n NimKI.count=Integer.parseInt(System.prompt(\"Wie viele Streichhölzer sollen es sein?\"));\n start( );\n }\n}","isHidden":false},{"name":"Startscreen","src":"","components":[{"type":"JLabel","value":"
Das Nim-Spiel
","valueType":"html","onAction":false,"actionCommand":"","align":"center","x":50,"y":50,"width":100,"height":100,"cssClass":"jlabel","cssCode":"","invisible":false},{"type":"JButton","value":"Trainieren","x":50,"y":50,"width":100,"height":100,"name":"trainieren"},{"type":"JButton","value":"Spielen","valueType":"html","onAction":true,"actionCommand":"","disabled":false,"x":50,"y":50,"width":100,"height":100,"cssClass":"jbutton","cssCode":"","invisible":false,"name":"spielen"}],"cssClass":"","cssCode":"","template":"1"},{"name":"Trainingsscreen","src":"","components":[{"type":"JPanel","components":[{"type":"JTextArea","value":"","placeholder":"","valueType":"text","disabled":true,"x":50,"y":50,"width":100,"height":100,"cssClass":"jtextarea","cssCode":"","invisible":false,"name":"spielablauf"},{"type":"JTextArea","value":"","placeholder":"","valueType":"text","disabled":true,"x":50,"y":50,"width":100,"height":100,"cssClass":"jtextarea","cssCode":"","invisible":false,"name":"tabelle1"},{"type":"JTextArea","value":"","placeholder":"","valueType":"text","disabled":true,"x":50,"y":50,"width":100,"height":100,"cssClass":"jtextarea","cssCode":"","invisible":false,"name":"tabelle2"},{"type":"JButton","value":"Löschen","valueType":"html","onAction":true,"actionCommand":"","disabled":false,"x":50,"y":50,"width":100,"height":100,"cssClass":"jbutton","cssCode":"","invisible":false,"name":"loeschen"},{"type":"JButton","value":"Zurücksetzen","valueType":"html","onAction":true,"actionCommand":"","disabled":false,"x":50,"y":50,"width":100,"height":100,"cssClass":"jbutton","cssCode":"","invisible":false,"name":"setback1"},{"type":"JButton","value":"Zurücksetzen","valueType":"html","onAction":true,"actionCommand":"","disabled":false,"x":50,"y":50,"width":100,"height":100,"cssClass":"jbutton","cssCode":"","invisible":false,"name":"setback2"}],"template":"1fr 1cm/3","onAction":false,"actionCommand":"","x":50,"y":50,"width":100,"height":100,"cssClass":"jpanel","cssCode":"","invisible":false,"hideContent":false},{"type":"JPanel","components":[{"type":"JButton","value":"Weiter trainieren","valueType":"html","onAction":true,"actionCommand":"","disabled":false,"x":50,"y":50,"width":100,"height":100,"cssClass":"jbutton","cssCode":"","invisible":false,"name":"starten"},{"type":"JButton","value":"Training stoppen","valueType":"html","onAction":true,"actionCommand":"","disabled":false,"x":50,"y":50,"width":100,"height":100,"cssClass":"jbutton","cssCode":"","invisible":true,"name":"stoppen"},{"type":"JButton","value":"zurück","valueType":"html","onAction":true,"actionCommand":"","disabled":false,"x":50,"y":50,"width":100,"height":100,"cssClass":"jbutton","cssCode":"","invisible":false,"name":"zurueck"}],"template":"2","onAction":false,"actionCommand":"","x":50,"y":50,"width":100,"height":100,"cssClass":"jpanel","cssCode":"","invisible":false,"hideContent":false}],"cssClass":"","cssCode":"","template":"1fr 1.5cm/"},{"name":"KI","src":"class KI implements Spieler{\n Optionen[] optionen;\n \n KI(int maxHoelzer){\n \n optionen=new Optionen[maxHoelzer];\n for (int i = 0; i < maxHoelzer; i++) {\n optionen[i]=new Optionen(i+1);\n }\n }\n\n void lernen(Zug z){\n if(z==null) return;\n optionen[z.anzahlHoelzer-1].streichen(z.genommen);\n }\n \n Zug zugMachen(int anzahlHoelzer){\n Optionen o=optionen[anzahlHoelzer-1];\n int anzahl=o.getRandomOption();\n Zug z=new Zug(anzahlHoelzer, anzahl, o.hasMoreThanOneOption());\n return z;\n }\n\n String getTabelle(){\n String t=\"\";\n for (int i = 0; i
1;\n }\n String alsString(){\n String t=\"\";\n if (anzahlHoelzer<10) {\n t+=\" \";\n }\n t+=anzahlHoelzer+\": \"+options;\n return t;\n }\n int getRandomOption(){\n int i=App.random(0, options.length-1);\n return options[i];\n }\n boolean streichen(int option){\n int[] neu=new int[options.length-1];\n int index=0;\n boolean enthalten=false;\n for (int i = 0; i < options.length; i++) {\n if(options[i]==option){\n enthalten=true;\n }else{\n neu[index]=options[i];\n if(index
0) {\n Zug z=kis[amZug].zugMachen(anzahlHoelzer);\n NimKI.println( \"Es sind \"+anzahlHoelzer+\" übrig.\" );\n NimKI.println( \"Spieler \"+(amZug+1)+\" nimmt \"+z.genommen );\n if(z.hadMoreThanOneOption){\n letzterZugMitMehrerenOptionen[amZug]=z;\n }\n anzahlHoelzer-=z.genommen;\n if(anzahlHoelzer>0){\n amZug=(amZug+1)%2;\n }\n }\n NimKI.println( \"Spieler \"+(amZug+1)+\" hat verloren.\" );\n kis[amZug].lernen(letzterZugMitMehrerenOptionen[amZug]);\n }\n}","isHidden":false},{"name":"Spieler","src":"interface Spieler{\n Zug zugMachen(int anzahlHoelzer);\n}","isHidden":false},{"name":"Spielscreen","src":"","components":[{"type":"JLabel","value":"","valueType":"html","onAction":false,"actionCommand":"","align":"center","x":50,"y":50,"width":100,"height":100,"cssClass":"jlabel","cssCode":"font-size: 300%; font-family: monospace; white-space: pre-wrap;","invisible":false,"name":"hoelzer"},{"type":"JButton","value":"x","valueType":"html","onAction":true,"actionCommand":"","disabled":false,"x":50,"y":50,"width":100,"height":100,"cssClass":"jbutton","cssCode":"position: fixed; left: auto; right: 1rem; top: 1rem; width: 2em; height: 2em;","invisible":false,"name":"zurueck"},{"type":"JPanel","components":[{"type":"JPanel","components":[{"type":"JButton","value":"Nimm 1","valueType":"html","onAction":true,"actionCommand":"","disabled":false,"x":50,"y":50,"width":100,"height":100,"cssClass":"jbutton","cssCode":"","invisible":false,"name":"nimm1"},{"type":"JButton","value":"Nimm 2","valueType":"html","onAction":true,"actionCommand":"","disabled":false,"x":50,"y":50,"width":100,"height":100,"cssClass":"jbutton","cssCode":"","invisible":false,"name":"nimm2"},{"type":"JButton","value":"Nimm 3","valueType":"html","onAction":true,"actionCommand":"","disabled":false,"x":50,"y":50,"width":100,"height":100,"cssClass":"jbutton","cssCode":"","invisible":false,"name":"nimm3"}],"template":"3","onAction":false,"actionCommand":"","x":50,"y":50,"width":100,"height":100,"cssClass":"jpanel","cssCode":"","invisible":false,"name":"nehmen","hideContent":false},{"type":"JPanel","components":[{"type":"JLabel","value":"","valueType":"html","onAction":false,"actionCommand":"","align":"center","x":50,"y":50,"width":100,"height":100,"cssClass":"jlabel","cssCode":"","invisible":false,"name":"kiZug"},{"type":"JButton","value":"Weiter","valueType":"html","onAction":true,"actionCommand":"","disabled":false,"x":50,"y":50,"width":100,"height":100,"cssClass":"jbutton","cssCode":"","invisible":false,"name":"weiterButton"}],"template":"2fr 1fr","onAction":false,"actionCommand":"","x":50,"y":50,"width":100,"height":100,"cssClass":"jpanel","cssCode":"","invisible":true,"name":"weiter","hideContent":false},{"type":"JPanel","components":[{"type":"JLabel","value":"","valueType":"html","onAction":false,"actionCommand":"","align":"center","x":50,"y":50,"width":100,"height":100,"cssClass":"jlabel","cssCode":"","invisible":false,"name":"endeNachricht"}],"template":"1","onAction":false,"actionCommand":"","x":50,"y":50,"width":100,"height":100,"cssClass":"jpanel","cssCode":"","invisible":true,"name":"ende","hideContent":false},{"type":"JLabel","value":"\n","valueType":"html","onAction":false,"actionCommand":"","align":"center","x":50,"y":50,"width":100,"height":100,"cssClass":"jlabel","cssCode":"","invisible":false}],"template":"1","onAction":false,"actionCommand":"","x":50,"y":50,"width":100,"height":100,"cssClass":"jpanel","cssCode":"","invisible":false,"hideContent":false}],"cssClass":"","cssCode":"","template":"1fr 3cm/"}],"database":"","css":".jtextarea{\n font-size:200%;\n}","assets":false,"name":"NimKI","description":"Eine KI wird trainiert, um das Nim-Spiel zu spielen.","theme_color":"black","background_color":"black","icon":null,"urls":["./"],"date":"2024-10-06T22:13:48.163Z","javaappVersion":"3.4.5"}Project Code Stop