int feldBreite=0;
int anzahlUmlaeufe=0;
int vorhandenekoerner=0;
int benoetigteKoerner=0;
void main() {
vorhandenekoerner=testeVorhandeneKoerener();
feldBreite=testeFeldBreite();
geheMitte();
while (vorhandenekoerner< berechneBenoetigteKoerner()){
feldBreite=feldBreite-2;
}
anzahlUmlaeufe=(feldBreite-1/2);
legeRaute();
}
void laufeBisZurWand() {
while (vornFrei()){
vor();
}
}
int testeVorhandeneKoerener(){
int zaehler=0;
while (!maulLeer()){
gib();
zaehler++;
}
while (kornDa()){
nimm();
}
return zaehler;
}
int testeFeldBreite(){
int zaehler=0;
laufeBisZurWand();
linksUm();
laufeBisZurWand();
linksUm();
while (vornFrei()){
vor();
zaehler++;
}
linksUm();
return zaehler;
}
int berechneBenoetigteKoerner(){
int i=0;
int benoetigteKoerner=1;
for(i=0;i<=(feldBreite-1/2);i++){
benoetigteKoerner=benoetigteKoerner+i*4;
}
return benoetigteKoerner;
}
void geheMitte(){
int i=0;
int j=0;
for (i=0;i<=((feldBreite-1)/2) ;i++){
vor();
}
linksUm();
for (j=0;j<=((feldBreite-1)/2) ;j++){
vor();
}
}
void rechtsUm(){
linksUm();
linksUm();
linksUm();
}
void geheDiagonal(){
vor();
linksUm();
vor();
rechtsUm();
gib();
}
void legeRaute(){
int i=0;
int j=0;
int k=0;
gib();
for (i=1;i<=anzahlUmlaeufe;i++){
if(vornFrei()){
vor();
linksUm();
for(j=1;j<=4;j++){
for (k=1;k<=i;k++){
geheDiagonal();
}
linksUm();
}
rechtsUm();
}
}
}
Comments