Project Code Start{"clazzesSourceCode":["class NimKI {\n static Startscreen startscreen;\n static Trainingsscreen trainingsscreen;\n static Spielscreen spielscreen;\n static KI ki1, ki2;\n static Zug letzterZug;\n \n static Spiel spiel;\n static void start( ) {\n ki1 = new KI( 11 );\n ki2 = new KI( 11 );\n startscreen = new Startscreen( );\n trainingsscreen = new Trainingsscreen( );\n spielscreen = new Spielscreen( );\n trainingsscreen.hide( );\n spielscreen.hide( );\n startscreen.spielen.addActionListener( ( ev ) -> {\n startscreen.hide( );\n spielscreen.show( );\n spiel = new Spiel( 11 );\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( 11 );\n updateKITabellen( );\n } );\n trainingsscreen.setback2.addActionListener( ( ev ) -> {\n ki2 = new KI( 11 );\n updateKITabellen( );\n } );\n trainingsscreen.loeschen.addActionListener( ( ev ) -> {\n clear( );\n } );\n updateKITabellen( );\n }\n \n static void trainieren( ) {\n Spiel spiel = new Spiel( 11 );\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 < 11; 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 start( );\n }\n}",{"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},{"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}],"cssClass":"","cssCode":"","template":"1fr 1cm/"},"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}","interface Spieler{\n Zug zugMachen(int anzahlHoelzer);\n}",{"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;","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"},{"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"},{"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"},{"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}],"cssClass":"","cssCode":"","template":"1fr 2cm/"}],"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":["./"]}Project Code Stop