1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
|
#!/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);
print_raetsel(@erb);
$eingabe = <> ;
while ( $eingabe ne $erb )
{
print "Sehr gut!\nwillst du noch mal Spielen\nyes or no"
$eingabe = <>
}
sub print_raetsel {
my ( @arry ) = @_;
my $count = 0;
foreach my $char ( @arry ) {
if ( ( $count % 3 ) eq 0 )
{
print "\n";
}
print $char . " ";
$count++;
}
} ## --- end sub print_raetsel
#=== 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 eq $index2 ); # ----- end do-while -----
@ergebnis[$index1,$index2] = @ergebnis[$index2,$index1];
}
return @ergebnis;
} ## --- end sub verwuerfeln
|