#!/usr/bin/env perl #=============================================================================== # 4.2 # # FILE: buchstabenraetzel.pl # # USAGE: ./buchstabenraetzel.pl # # DESCRIPTION: Erstellt ein Buchstabenrätzel zu einenem lösungswort # # OPTIONS: --- # REQUIREMENTS: --- # BUGS: --- # NOTES: --- # AUTHOR: Martin Talarczyk (MT), martin@talarczyk.de # ORGANIZATION: Fachhochschule Südwestfalen, Iserlohn # VERSION: 1.0 # CREATED: 05.11.2015 10:10:27 # REVISION: --- #=============================================================================== use strict; use warnings; use utf8; binmode (STDIN, ":encoding(UTF-8)"); binmode (STDOUT, ":encoding(UTF-8)"); binmode (STDERR, ":encoding(UTF-8)"); use open ":encoding(UTF-8)"; #=============================================================================== # Variabelen Deklarasion #=============================================================================== #Anzahl der vertauschungen my $schwirichkeit = 10; #Arry aller Worte aus GERMAN9.LST my @word; #Verwürfeltes Rätzel wort my @wordver; #lösungswort im klar text my $loesung; #Den Verwürfelten String als Arry my @erb; my $eingabe; my $wordfp_file_name = 'GERMAN9.LST'; # input file name print "Programm begint...\n"; #------------------------------------------------------------------------------- # Datei GERMAN9.LST öffnen. #------------------------------------------------------------------------------- open my $wordfp, '<', $wordfp_file_name or die "$0 : failed to open input file '$wordfp_file_name' : $!\n"; print "lesse german9.lst ein...\n"; @word = <$wordfp>; chomp(@word); close $wordfp or warn "$0 : failed to close input file '$wordfp_file_name' : $!\n"; #------------------------------------------------------------------------------- # Datei GERMAN9.LST schliesen #------------------------------------------------------------------------------- print "Spiele beginnt...\n"; $loesung = @word[ int rand @word]; @erb = verwuerfeln($loesung,$schwirichkeit); my $count = 0; print $loesung . "\n"; foreach my $char ( @erb ) { if ( ( $count % 3 ) eq 0 ) { print "\n"; } print $char . " "; $count++; } $eingabe = <>; if($eingabe eq $loesung){ print "Das war richtig\n"; } else { print "Das war leider Flasch versuchen sie es erneut\n"; $eingabe = <>; } #=== FUNCTION ================================================================ # NAME: verwuerfeln # PURPOSE: # PARAMETERS: # $word # String der vertauscht wird. # $vertasuchen # anzahl der vertauschungen # RETURNS: # @ergebnis # Vertasuchter String in einem Feld. # DESCRIPTION: # übernimmt eine String desswen buchsteben beliebig oft miteinader # vertauscht werden. # THROWS: no exceptions # COMMENTS: none # SEE ALSO: n/a #=============================================================================== sub verwuerfeln { my ( $word , $vertauschen ) = @_; my @ergebnis = split //, uc $word; my $laenge = int @ergebnis; my $index1 = 0; my $index2 = 0; defined $word or die "Es wurde keien String übergeben.\n"; defined $vertauschen or die "Es wurde keine Anzahl der vertauschung übergeben.\n"; for ( my $count = 0 ; $count < $vertauschen ;$count++ ) { do { $index1 = int rand $laenge; $index2 = int rand $laenge; } while ( $index1 == $index2 ); # ----- end do-while ----- @ergebnis[$index1,$index2] = @ergebnis[$index2,$index1]; } return @ergebnis; } ## --- end sub verwuerfeln