mirror of
https://github.com/coding-horror/basic-computer-games.git
synced 2025-12-23 15:37:51 -08:00
Debug poem generation
This commit is contained in:
@@ -2,10 +2,10 @@ namespace Poetry;
|
||||
|
||||
internal class Context
|
||||
{
|
||||
public int U { get; set; }
|
||||
public int I { get; set; }
|
||||
public int J { get; set; }
|
||||
public int J { get; set; }
|
||||
public int K { get; set; }
|
||||
public int U { get; set; }
|
||||
public bool SkipComma { get; set; }
|
||||
public bool UseGroup2 { get; set; }
|
||||
}
|
||||
|
||||
@@ -66,11 +66,14 @@ internal class Phrase
|
||||
|
||||
public static Phrase GetPhrase(Context context)
|
||||
{
|
||||
var group = context.UseGroup2 ? _phrases[1] : _phrases[context.J];
|
||||
var group = GetGroup(context.UseGroup2 ? 2 : context.J);
|
||||
context.UseGroup2 = false;
|
||||
return group[context.I % 5];
|
||||
return group[Math.Max(context.I - 1, 0)];
|
||||
}
|
||||
|
||||
private static Phrase[] GetGroup(int groupNumber) => _phrases[Math.Max(groupNumber - 1, 0)];
|
||||
|
||||
|
||||
public void Write(IReadWrite io, Context context)
|
||||
{
|
||||
if (_condition.Invoke(context))
|
||||
|
||||
@@ -10,13 +10,14 @@ internal class Poem
|
||||
{
|
||||
io.WritePhrase(context);
|
||||
|
||||
if (!context.SkipComma && context.U != 0 && random.NextFloat() <= 0.19)
|
||||
if (!context.SkipComma && random.NextFloat() <= 0.19F && context.U != 0)
|
||||
{
|
||||
io.Write(",");
|
||||
context.U = 2;
|
||||
}
|
||||
context.SkipComma = false;
|
||||
|
||||
if (random.NextFloat() <= 0.65)
|
||||
if (random.NextFloat() <= 0.65F)
|
||||
{
|
||||
io.Write(" ");
|
||||
context.U += 1;
|
||||
@@ -38,7 +39,7 @@ internal class Poem
|
||||
io.Write(" ");
|
||||
}
|
||||
|
||||
if (context.J < 4) { break; }
|
||||
if (context.J < 5) { break; }
|
||||
|
||||
context.J = 0;
|
||||
io.WriteLine();
|
||||
|
||||
@@ -2,4 +2,4 @@ global using Games.Common.IO;
|
||||
global using Games.Common.Randomness;
|
||||
global using Poetry;
|
||||
|
||||
Poem.Compose(new ConsoleIO(), new RandomNumberGenerator());
|
||||
Poem.Compose(new ConsoleIO(), new RandomNumberGenerator());
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
5 Y=RND(-1)
|
||||
6 REM FOR X = 1 TO 100
|
||||
7 REM PRINT RND(1);","
|
||||
8 REM NEXT X
|
||||
9 REM GOTO 999
|
||||
10 PRINT TAB(30);"POETRY"
|
||||
20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
|
||||
30 PRINT:PRINT:PRINT
|
||||
@@ -26,17 +31,21 @@
|
||||
133 PRINT "SLOWLY CREEPING";:GOTO 210
|
||||
134 PRINT "...EVERMORE";:GOTO 210
|
||||
135 PRINT "NEVERMORE";
|
||||
210 IF U=0 OR RND(1)>.19 THEN 212
|
||||
210 GOSUB 500 : IF U=0 OR X>.19 THEN 212
|
||||
211 PRINT ",";:U=2
|
||||
212 IF RND(1)>.65 THEN 214
|
||||
212 GOSUB 500 : IF X>.65 THEN 214
|
||||
213 PRINT " ";:U=U+1:GOTO 215
|
||||
214 PRINT : U=0
|
||||
215 I=INT(INT(10*RND(1))/2)+1
|
||||
215 GOSUB 500 : I=INT(INT(10*X)/2)+1
|
||||
220 J=J+1 : K=K+1
|
||||
225 REM PRINT "I=";I;"; J=";J;"; K=";K;"; U=";U
|
||||
230 IF U>0 OR INT(J/2)<>J/2 THEN 240
|
||||
235 PRINT " ";
|
||||
240 ON J GOTO 90,110,120,130,250
|
||||
250 J=0 : PRINT : IF K>20 THEN 270
|
||||
260 GOTO 215
|
||||
270 PRINT : U=0 : K=0 : GOTO 110
|
||||
500 X = RND(1)
|
||||
505 REM PRINT "#";X;"#"
|
||||
510 RETURN
|
||||
999 END
|
||||
|
||||
Reference in New Issue
Block a user