Perl Schachfeld schwarz weis

Hallo ihr lieben,

ich muss für die Arbeit bis morgen ein Perlscript schreiben:

Es soll ein schwarz weißes 8x8 Felder Feld ausgegeben werden, also wie ein schachfeld.

Ich weis, das ich 2 for-schleifen ineinander schachteln muss, da ich aber keinerlei programmierkenntnisse habe, hab ich keine ahnung, wie ich das ganze umsetzen soll.

Bitte helft mit :-(

Liebe Grüße

Carina ?(
 
wo liegt das Problem? An der Umsetzung der schleifen oder auch die Ausgabe/alles andere?

ich kann kein perl, deshalb das ganze als pseudocode:

Code:
for($i = 0; $i < 8; ++$i) {
// die erste for schleife, die variable i geht von 0 bis 8, dies gibt die zeilen an

  for($j = 0; $j < 8; ++$j) {
  // auch j wandert von 0 bis 8, dies sind die spalten, im endeffekt gehen wir also zeile für zeile jeweils alle 8 spalten durch
    if( ($i % 2 == 0) && ($j % 2 == 0) ) // bei einer geraden zeilennummer und einer geraden spaltennummer
      // weiß
    if( ($i % 2 == 0) && ($j % 2 == 1) ) // bei einer geraden zeilennummer und einer UNgeraden spaltennummer
      // schwarz
    if( ($i % 2 == 1) && ($j % 2 == 0) ) // bei einer UNgeraden zeilennummer und einer geraden spaltennummer
      // schwarz
    if( ($i % 2 == 1) && ($j % 2 == 1) ) // bei einer UNgeraden zeilennummer und einer UNgeraden spaltennummer
      // weiß

      // hinweis: man könnte diese if-abfragen auch mit einem XOR kompakter machen, aber der einfachheit halber habe ich es hier ausführlich geschrieben
    }

    // eine zeile ist durch...

}


ganz ohne Programmierkenntnisse wird es allerdings schon schwierig... :)
 
Hallo Heinzelotto,

genau das ist mein problem, ich habe keinerlei Kenntnisse was das Programmieren angeht, deswegen weis ich nciht wo ich anfangen muss und was wie genau geht und was zu beachten ist.

Wär echt cool wenn jemand mir den Pseudocode zu einem richtigen Perlscript macht, am Besten mit erklärungen, was was bewirkt.

Danke dir schonmal.

Viele Liebe Grüße

Carina
 
Naja im Prinzip kannst du den Pseudocode ja 1:1 so umsetzen, solange du keine gui brauchst. Dafür musst du Perl nicht wirklich können. Habs mal mit X und O für schwarz und weiß gemacht. Falls du ne echte GUI brauchst, kann ich dir aber nicht weiterhelfen, da ich kein perl kann.
Code:
#!/usr/bin/perl -w

for(my $i =0;$i <= 7;$i++){
	for( my $j=0; $j<=7;$j++){
		if (($i%2)==($j%2)) {
			print "X";
		}else{
			print 'O';
		}
	}
	print "\n";
}

Dass du 2 for schleifen brauchst hattest du ja schon selbst festgestellt. Die erste läuft die Zeilen ab und die 2te in jeder Zeile die Spalten jeweils von 0-7. Wenn nun Zeilennummer ($i) modulo 2 gleich Spaltennumer ($j) modulo 2 ist, also beide gerade oder ungerade sind gibt er ein X aus ansonsten ein O. Nach jeder Zeile gibt er \n also einen Zeilenumbruch aus. Wie gesagt mein erstes Perl-skript, daher keine Ahnung, wie man das mit ner GUI umsetzt.
 
Original von rini90
ich muss für die Arbeit bis morgen ein Perlscript schreiben:


da ich aber keinerlei programmierkenntnisse habe, hab ich keine ahnung, wie ich das ganze umsetzen soll.

Dann solltest du deinen Chef evtl. mal darauf hinweisen, dass du keine Programmierkenntnisse hast und er dir Aufgaben stellen soll, die im Rahmen deiner Möglichkeiten liegen.

PS: Wir sollten das Board evtl. auch noch unter hausaufgabenhilfeboard.de zur Verfügung stellen. Spoonfeeding.de steht auch noch zur Verfügung. :rolleyes:
 
Also den code an sich hab ich schon, nur kann ich das mit den Farben nicht, genau daran scheitert es, am Farbwechsel zwischen weisem feld und schwarzem feld: Bisher hab ich nur ein w und ein s.

Code:
#!/usr/bin/perl
 use strict;
 use warnings;  
for (my $i=0; $i<8; $i++) {
      for (my $j=0; $j<8; $j++)  { 
         if (($j+$i)%2) {print "s";}#s=schwarz, w=weiß          
          else { print "w";}       
 }       print "\n";    
 } print "\n";

LG Carina
 
Code:
#!/usr/bin/perl  
use strict;
 use warnings; 
use Term::ANSIColor; 
use Term::ANSIColor qw(:constants);   

for (my $i=0; $i<8; $i++) {    
       for (my $j=0; $j<8; $j++)  {          
             if (($j+$i)%2) {print ON_BLACK "  ", RESET;}          
             else { print ON_WHITE "  ", RESET;}        
}      
 print "\n";    
} print "\n";


So jetzt gehts,

danke für eure Hilfe
 
Zurück
Oben