Unterricht in der Corona-Krise
Aufgrund des Abiturs findet kein Unterricht statt. Falls ihr Fragen bzgl. eurer Abi-Prüfung habt, könnt ihr mich natürlich jederzeit anschreiben.
Die Klausur ist fertig korrigiert. Wenn ihr mir eine entsprechende Mail schickt, sende euch einen Scan eurer Klausur zu inklusive Notenspiegel.
Viel Erfolg fürs Abi! Bleibt gesund!
Zusatzmaterial zum Unterricht
- JadaEditor v1, JadaEditor v2, JadaEditor v3, JadaEditor v4
- Skript Datenbanken
- SQL-Testprogramm für die Projektarbeit
- Skript Algorithmik
- Hero-Quest aus dem Unterricht
- AB 3: Patientenverwaltung. Ihr findet das Programm hier.
- AB 1: Schleifen und Arrays. Beachtet das Video: Erläuterungen zu Methoden
Projektarbeiten „Datenbanken“
- Disney-Prinzessinen
- Krankenhausverwaltung
- Longboard-Shop
- Musik
- Notendatenbank
- Harry Potter
- Tierheim
- Verbrechen
Projekte 2018/19:
- Notendatenbank (mit Beispiel-Datenbank)
- Ungeheuer Versenken
- Pokemon
- Memorie (J+F)
- Schach
- Kniffel
- Uno
- Schiffe versenken
- Memory (V+T)
Eine KI für das Nim-Spiel
public class NimKI {
KI k1,k2;
NimKI(){
k1=new KI("Brigitte");
k2=new KI("Herbert");
trainieren();
}
public void trainieren() {
for(int i=0;i<1000;i++) {
Partie p=new Partie(k1,k2);
p.spielen();
}
System.out.println("KI 1:");
System.out.println(k1.toString());
System.out.println("KI 2:");
System.out.println(k2.toString());
}
public static void main(String[] args) {
new NimKI();
}
}
public class KI {
Zugoptionen[] zugoptionen;
String name;
KI(String n){
name=n;
zugoptionen=new Zugoptionen[13];
for(int i=0;i<13;i++) {
zugoptionen[i]=new Zugoptionen(i+1);
}
}
public int nehmen(int hoelzerUebrig) {
Zugoptionen optionen=zugoptionen[hoelzerUebrig-1];
return optionen.wieviel();
}
public boolean entferneOption(Zug z) {
return zugoptionen[z.anzahlHoelzer-1].entferneOption(z.nehmen);
}
public String toString() {
String t="";
for(int i=0;i<zugoptionen.length;i++) {
Zugoptionen z=zugoptionen[i];
t=t+z.toString()+"\n";
}
return t;
}
}
public class Partie {
Zug[] zuege;
int anzahlZuege;
KI KI1;
KI KI2;
KI amZug;
int hoelzerUebrig;
Partie(KI k1, KI k2){
KI1=k1;
KI2=k2;
amZug=KI1;
hoelzerUebrig=13;
anzahlZuege=0;
zuege=new Zug[13];
}
public void spielerWechsel() {
if(amZug==KI1){
amZug=KI2;
} else {
amZug=KI1;
}
}
public void spielen() {
while(hoelzerUebrig>0) {
System.out.println("Spieler "+amZug.name+" ist am Zug "+" und es sind noch "+hoelzerUebrig+" übrig");
int x=amZug.nehmen(hoelzerUebrig);
zuege[anzahlZuege]=new Zug(amZug,hoelzerUebrig,x);
anzahlZuege++;
hoelzerUebrig-=x;
System.out.println("er nimmt "+x+" und es sind noch "+hoelzerUebrig+" übrig");
spielerWechsel();
}
spielerWechsel();
int i=1;
boolean geklappt=false;
while(geklappt==false && i<=anzahlZuege) {
geklappt=amZug.entferneOption(zuege[anzahlZuege-i]);
if(geklappt==true) {
Zug z=zuege[anzahlZuege-i];
System.out.println("Option entfernt: "+z.anzahlHoelzer+": "+z.nehmen);
}
i=i+2;
}
}
}
public class Zug {
KI spieler;
int anzahlHoelzer;
int nehmen;
Zug(KI s,int aH, int n){
spieler=s;
anzahlHoelzer=aH;
nehmen=n;
}
}
public class Zugoptionen {
int[] anzahlen;
int anzahlHoelzer;
Zugoptionen(int aH){
anzahlHoelzer=aH;
anzahlen= new int[]{1,2,3};
}
public int wieviel() {
if(anzahlen.length>0) {
int r=(int)(Math.random()*anzahlen.length);
return anzahlen[r];
}else {
return (int)(Math.random()*3)+1;
}
}
public String toString() {
String t="";
for(int i=0;i<anzahlen.length;i++) {
t=t+anzahlHoelzer+": "+anzahlen[i]+",";
}
return t;
}
public boolean entferneOption(int genommen) {
if(anzahlen.length>0) {
int s=0;
int[] neu=new int[anzahlen.length-1];
boolean funktioniert=false;
for(int i=0;i<anzahlen.length;i++) {
if(anzahlen[i]!=genommen) {
neu[s]=anzahlen[i];
s++;
}else {
funktioniert=true;
}
}
anzahlen=neu;
return true;
}else {
return false;
}
}
}