Leser: 1
|< 1 2 >| | 15 Einträge, 2 Seiten |
1 2 3
574:$Question = (split(/[$d][$d]/,$QuestionLine))[1]; 575: $Category = (split(/[$d]/,$QuestionLine))[1]; 576: $Answer = (split(/[$d]/,$QuestionLine))[2];
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
if ( defined $QuestionLine and $QuestionLine ne '' ) { $d = substr( $QuestionLine, 0, 1 ); # mehr tun mit $d, etc. # Sub beenden und skalare 1 (im Sinne v. TRUE) zurueckliefern # alternativ such Dir nen Wert, der hier sinnvoll generiert # werden koennte, und liefer den zurueck (wenn er denn # ausserhalb sinnvoll verwendet/geprueft werden kann) return scalar 1; } else { # was tun, weil $QuestionLine nicht definiert ist # Sub beenden und undef als Fehlerzeichen zurueckgeben return undef; }
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
sub GetQuestion { $PointValue = $ScoreValues[rand($#ScoreValues)]; if (rand(15) == 0) { $PointValue *= 2; } $FileNum = int(rand($TotalFiles))+1; $QNum = int(rand($QuestionDBinfo{$FileNum}[1]))+1; open(QFILE, $QuestionDBinfo{$FileNum}[0]) or die "Error opening the trivia file\n"; for($i = 0; $i < $QNum; $i += 1) { $QuestionLine = <QFILE>; } close(QFILE); $d = substr($QuestionLine,0,1); $Question = (split(/[$d][$d]/,$QuestionLine))[1]; $Category = (split(/[$d]/,$QuestionLine))[1]; $Answer = (split(/[$d]/,$QuestionLine))[2]; $QID = "F".$FileNum.".Q".$QNum; chomp($Question); if ($Category eq "Scramble") { @letters = (); for($i=0;$i<length($Question);$i+=1) { push(@letters,substr($Question,$i,1)); } @letters = shuffle(@letters); $Question = ""; for($i=0;$i<scalar(@letters);$i+=1) { $Question = $Question." ".$letters[$i]; } $Question = "Unscramble this word: ".$Question; $l = length($Answer) - 5; while ($l >= 0) { if (int(rand(2)) == 1) { $PointValue *= 2; } $l -= 3; } } @retval = ($PointValue, $QID, $Category, $Question, $Answer); return @retval; }
@Q = &GetQuestion;
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
sub GetQuestion { my $PointValue=shift(@_); my $TotalFiles=shift(@_); my $QuestionDBinfo=shift(@_); if (rand(15) == 0) { $PointValue *= 2; } my $FileNum = int(rand($TotalFiles))+1; my $QNum = int(rand($$QuestionDBinfo{$FileNum}[1]))+1; my $QuestionLine; # hier war der Hauptfehler "$QuestionLine" existierte nur innerhalb von "for" open(QFILE, $$QuestionDBinfo{$FileNum}[0]) or die "Error opening the trivia file\n"; for($i = 0; $i < $QNum; $i += 1) { $QuestionLine = <QFILE>; } close(QFILE); die "No string read from the trivia file!" if ($QuestionLine eq ''); # Trenner ermitteln? my $d = substr($QuestionLine,0,1); # was machst du hier??? my $Question = (split(/[$d][$d]/,$QuestionLine))[1]; my $Category = (split(/[$d]/,$QuestionLine))[1]; my $Answer = (split(/[$d]/,$QuestionLine))[2]; # so wie das da steht macht es keinen Sinn. # gib mal eine Beispielzeile. # wenn ich den Code richtig interpretiere sieht eine Questionline so aus: # ;Kategorie;Frage;Antwort # Ein korrekter Trenner sähe wohl so aus: # my ($Category,$Question,$Answer)=(split($d,$QuestionLine))[1,2,3]; my $QID = "F".$FileNum.".Q".$QNum; chomp($Question); if ($Category eq "Scramble") { my @letters = (); for($i=0;$i<length($Question);$i+=1) { push(@letters,substr($Question,$i,1)); } @letters = shuffle(@letters); $Question = ""; for($i=0;$i<scalar(@letters);$i+=1) { $Question = $Question." ".$letters[$i]; } $Question = "Unscramble this word: ".$Question; my $l = length($Answer) - 5; while ($l >= 0) { if (int(rand(2)) == 1) { $PointValue *= 2; } $l -= 3; } } my @retval = ($PointValue, $QID, $Category, $Question, $Answer); return @retval; } # Aufruf: @list=GetQuestion($ScoreValues[rand($#ScoreValues)],$TotalFiles,\@QuestionDBinfo);
open(QFILE, $$QuestionDBinfo{$FileNum}[0]) or die "Error opening the trivia file\n";
open(QFILE, '<', $$QuestionDBinfo{$FileNum}[0]) or die "Error opening the trivia file\n";
1 2 3
for($i=0;$i<length($Question);$i+=1) { push(@letters,substr($Question,$i,1)); }
push @letters, split(//, $Question);
1 2 3
for($i=0;$i<scalar(@letters);$i+=1) { $Question = $Question." ".$letters[$i]; }
$Question .= " " . join( " ", @letters);
|< 1 2 >| | 15 Einträge, 2 Seiten |