WORDWISE PLUS PROGRAMMA'S 

DEEL 4

WERKGROEP TEKSTVERWERKING

19 januari 1986

INHOUD VAN DIT GEDEELTE:

MASTERMIND

Wordwise Plus maakt geen onderscheid tussen tekst en programma. Dit gedeelte bestaat daarom uit een hele lange tekst. Wil je een programma gebruiken, save het deel dan met menu 3 en laadt het vervolgens in een segmenten. 

N.B. Denk eraan dat sommige van de  programma's uit het Wordwise gedeelte van deze schijf ook bruikbaar zijn voor Wordwise+ o.a. funktietoets definities.

=====================================
@  MASTERMIND 
geeft een aantal files om mastermind met woorden te spelen in het Nederlands, Frans of Engels. Het programma kiest zelf random een woord en de gebruiker moet het raden. Het programma zorgt zelf voor het groeien van de woordenlijsten waaruit het de te raden woorden kiest.
MasterMind met woorden in WORDWISE-PLUS
is geschreven door Jean-Pierre Kent.

   Dat WORDWISE-PLUS een volwaardige programmeertaal is mag niemand betwijfelen. Er ontbreekt wel een heleboel faciliteiten die je zou verwachten van een programmeertaal, maar er zitten ook heel wat handigheidjes in die het makkelijker maakt sommige tekstgerichte programma's in WW+ te schrijven dan in welke andere taal ook.
   Het hierna besproken MasterMind programma behoort zeker niet tot deze categorie. Basic, en zelfs Pascal - het gaat immers om stringetjes van een konstante lengte - zijn hiervoor veel geschikter. Aanleiding van het schrijven van dit programma was echter niet de wens te profiteren van het gemak van WW+ maar integendeel iets erin te programmeren waarvoor het niet gemaakt is - om de taal onder de knie te krijgen.

Wijze van spelen.

   Het programma gebruikt de tekstruimte evenals segmenten 7 t/m 9. Het programma zelf mag dus in seg. 0 t/m 6 zitten.
   Het programma vraagt eerst in het Nederlands in welke taal je wenst te spelen. Als je een taal kiest warvoor geen informatie op disc staat zegt het programma sorry, laat je nog een keer zien om welke taal je hebt gevraagd, en stopt. Hier zijn drie talen aangeboden: Nederlands, Engels en Frans. Zie verder hoe je een taalfile kunt genereren om in een andere taal te kunnen spelen.
   Het programma herkent een taal aan de eerste twee letters van de Nederlandse naam van deze taal: NE, EN, FR dus. Meer letters geven mag, alleen de eerste twee worden gepakt. Daarna verloopt het gehele dialoog in de gekozen taal. Je wordt eerst gevraagd om de lengte van het te raden woord. Het spel kan slechts worden gespeeld met woordlengtes waarvoor een file bestaat in de betreffende taal. Uit die file gaat het programma vervolgens, met behulp van een random number generator, een woord kiezen om je te laten raden. Je krijgt dan een beeldscherm met volgend aspekt:

    _____
 1. 

   Het aantal streepjes komt overeen met de gevraagde woordlengte. Nu tik je een woord in. Als het aantal letters niet klopt protesteert het programma en er wordt met je voorstel niets gedaan. Anders wordt je woord vergeleken met het te raden woord en je krijgt rechts een score bestaande uit: a) aantal letters die in het te raden woord op dezelfde positie voorkomen als in je voorstel; b) aantal letters die wel voorkomen, maar in een andere positie. Als een letter in je voorstel twee keer voorkomt en maar een keer in het te raden woord, wordt alleen met een rekening gehouden - en als een van de twee op zijn plaats is dan wordt met deze rekening gehouden. Bijvoorbeeld kan na je eerste voorstel het beeldscherm zo eruitzien:


    _____
 1. NACHT 2 / 1
 2.

   Dit betekent dat twee van de vijf letters van NACHT raak zijn, en nog een letter wel juist is maar op een andere positie zit.

   Als je het goede woord voorstelt, dan wordt je geinformeerd van je succes, en je krijgt ook te weten in hoeveel pogingen het je gelukt is. Daarna wordt je gevraagd of je verder wilt in dezelfde taal. Zo ja wordt je weer gevraagd met welke woordlengte en het spel begint weer. Als je niet meer wilt spelen zeg je nee en het programma stopt. Dit is de enige manier om van taal te wisselen.

Het aanmaken van stuurfiles.

   Alle dialooginformatie wordt in files opgeslagen. Een taalfile moet een naam hebben die begint met M.MM. met nog de eerste twee letters van het Nederlandse naam van de taal. Voor Nederlands is dat dus M.MM.NE. De file moet de volgende structuur hebben
1. (Lege regel)
2. "EINDE VAN HET SPEL"
3. "Laatste spel was met woorden van "
4. " letters"
5. "Wil je met een andere lengte spelen ? "
6. "Nieuwe lengte: "
7. "Er bestaat geen lijst met woorden van "
8. " letters."
9. "Gevonden in "
10. " poging" (enkelvoud)
11. "en" (meervoudachtervoegsel)
12. "Nog een spel ? "
13-15: (een boodschap om een woord van de verkeerde lengte te weigeren)

   Tussen aanhalingstekens: de betekenis van de regel (eigenlijk de tekst uit M.MM.NE); tussen haken: en uitleg van wat het moet zijn. Een vergelijking van de drie aangeboden files (Nederlands, Frans, Engels) zou voldoende aanwijzingen moeten geven tot het opstellen van een referentiefile voor elke andere taal.

Bovendien moet voor elke gevraagde woordlengte een file bestaan onder de naam M.MMLttnn, waar tt voor de taalcode staat (NE voor Nederlands, enz.) en nn voor het aantal letters (05 voor vijf letters). Bv. M.MMLFR07 bevat een lijst franse woorden van 7 letters. In die file moet ten minste een woord aanwezig zijn. Er is geen bovenste limiet - behalve die van het geheugen van de BBC. Daar het aanmaken van dergelijke lijsten een saai klusje kan zijn is het programma zodanig opgesteld dat de gebruikte lijst bij elke spel groeit. Het is dus voldoende om met een file te beginnen die maar een woord bevat. Als er steeds met dezelfde file wordt gespeeld krijgt hij steeds meer woorden bij.

   Je wilt natuurlijk niet dat al de woorden die je gebruikt om telkens een paar letters te testen in de referentiefile terechtkomen: je wilt alleen de woorden in hun woordenboekvorm - het is immers een van de regels van Woord-MasterMind dat je alle vormen van woorden mag gebruiken om te raden, maar dat je alleen grondvormen mag laten raden. Dus als je een grondvorm gebruikt bij het raden moet je het programma vertellen dat dit woord in de lijst terecht mag. Dit gebeurt door op de TAB-toets te druken voordat je het woord intikt. Dan komt een pijltje in plaats van een spatie tussen nummer en woord op je beeldscherm.

Hulpjes bij het raden.

   Je hoeft je hypothesen en uitvindingen niet op papier bij te houden: het programma biedt een aantal mogelijkheden tot het aangeven van gevonden letters en het markeren van letters die er niet bij horen. Hiervoor zijn een aantal edit-faciliteiten van WW+ gebruikt. Daar echter elke gedrukte toets door het programma zelf wordt bekeken en geinterpreteerd kan het proces verrassend langzaam verlopen. Hier zijn de mogelijkheden:
Pijltjestoetsen: beweeg de cursor in de aangegeven richting
Pijltjestoetsen met CTRL: niets
Pijltjestoetsen met SHFT: alleen naar begin of einde tekst. De horizontale pijlen reageren niet met SHFT.
CTRL-S: Hoofdletter naar kleinletter en omgekeerd
CTRL-A: vervang deze letter met een spatie
DELETE: vervang vorige letter met een spatie.

Met deze mogelijkheden kun je door de gebruikte woorden wandelen, letters waarvan je al weet dat ze niet van toepassing zijn naar kleinletters swappen, de situatie herstellen als je merkt dat je een fout hebt gemaakt, de al geraden letters boven de streepjes-lijn schrijven, weer eruithalen als je denkt dat je een fout hebt gemaakt, enz. Deze handelingen hebben geen invloed op het spel. Het programma houdt alleen rekening met wat je op de laatste regel schrijft. Dit moet je wel in hoofdletters schrijven. Een goede tip is: druk aan het begin van het spel SHFT-CAPSLOCK. Dan schrijf je in hoofdletters, en met SHIFT kun je op de bovenlijn kleinletters zetten.

Ik ben ervan bewust dat dit geen uitstekende handleiding is. Maar als je WILT spelen zul je wel je weg vinden. Veel plezier ermee.
--------------------------------------
M.MASERM

REM MASTER MIND MAY 1985 J.-P. KENT
*DIR M
N%=0
CLS
PRINT "In welke taal wil je spelen ? ";
Z$=GLK$
SELECT SEGMENT 7
DELETE TEXT
TYPE Z$
CURSOR TOP
T$=""
DOTHIS
  T$=T$+CHR$((ASC(GCT$)MOD32)+64)
TIMES 2
Z$="MM."+T$
Z%=OPENINZ$
IF Z%=0 THEN GOTO TAAL
CLOSE#Z%
LOAD TEXT Z$
REPEAT
  PROCINIT
  PROCPLAY
  PROCDISPLAY
UNTIL Y$="N"
M%=1
PROCMES
PRINT
END

.INIT
CLS
IF N%<>0 THEN PROCALTER
IF N%=0 THEN PROCCHOOSE
SELECT SEGMENT 9
LOAD TEXT F$
CURSOR TOP
Z%=0
REPEAT
  W$=GLT$
  Z%=Z%+1
UNTIL EOT
IF Z% > 1 THEN Z%=(TIME MOD Z%) +1
CURSOR TOP
REPEAT
  W$=GLT$
  Z%=Z%-1
UNTIL Z%=0
SELECT TEXT
DELETE TEXT
TYPE"    "
DOTHIS
  TYPE" "
TIMESN%
TYPE"|R    "
DOTHIS
  TYPE "_"
TIMES N%
T%=1
ENDPROC


.ALTER
M%=2
PROCMES
PRINT N%;
PROCMES
PRINT
PROCMES
Y$=CHR$((GETMOD32)+64)
PRINT Y$
IF (Y$="Y") OR (Y$="J") THEN N%=0
ENDPROC

.CHOOSE
REPEAT
  M%=5
  PROCMES
  N$=GLK$
  N%=VALN$
  F$="MML"+T$
  IF LENN$=1 THEN F$=F$+"0"
  F$=F$+N$
  Z%=OPENINF$
  IF Z%<>0 THEN CLOSE#Z%
  IF (Z%<>0) OR (N%=0) THEN GOTO FOUND
  PROCMES
  PRINT N$;
  PROCMES
  PRINT
.FOUND
UNTIL (Z% <> 0) OR (N%=0)
IF Z%<>0 THEN ENDPROC
M%=1
PROCMES
PRINT
END

.PLAY
CURSOR BOTTOM
TYPE "|R"
IF T%<10 THEN TYPE" "
TYPE STR$T%+". "
PROCMOVE
IF G% THEN PROCINSERT
SELECT SEGMENT 8

DELETE TEXT
TYPE G$+"|R"
TYPE W$+"|R"
J%=0
DOTHIS
  CURSOR TOP
  A$=GCT$
  DELETE LEFT
  CURSOR DOWN
  B$=GCT$
  DELETE LEFT
  IF A$=B$ THEN J%=J%+1
TIMES N%

DELETE TEXT
TYPE G$+"|R"
TYPE W$+"|R"
I%=0
DOTHIS
  CURSOR TOP
  A$=GCT$
  DELETE LEFT
  CURSOR AT 39
  FIND A$
  IF EOT THEN GOTO NEXT
    DELETE AT
    I%=I%+1
.NEXT
TIMES N%
I%=I%-J%


SELECT TEXT
CURSOR BOTTOM
TYPE " "+STR$J%+" / "+STR$I%
IF J%=N% THEN ENDPROC
T%=T%+1
GOTO PLAY


.INSERT
SELECT SEGMENT 9
CURSOR TOP
FINDG$
IF EOT=FALSE THEN ENDPROC
TYPE G$+"|R"
SELECT TEXT
ENDPROC


.TAB
DELETE LEFT
TYPE "|T"
G$=""
G%=TRUE
ENDPROC

.DISPLAY
M%=8
PRINT
PRINT W$
PROCMES
PRINT T%;
PROCMES
IFT%>1 THEN PROCMES
IFT%=1 THEN M%=M%+1
SELECT SEGMENT 9
OSCLI "ACCESS "+F$
OSCLI "DELETE "+F$
SAVE TEXT F$
OSCLI "ACCESS "+F$+" L"
SELECT TEXT
PRINT
PROCMES
Y$=CHR$((GETMOD32)+64)
PRINT Y$
ENDPROC


.MOVE

REPEAT
  DISPLAY
  Z%=GET
  IFZ%>=127 THEN PROCCURSOR
  IF (Z%<127)AND(EOT=FALSE)THEN PROCOV
UNTIL EOT AND (Z%<127)
CURSOR BOTTOM
G%=FALSE
G$=CHR$((Z%MOD32)+64)
IF Z%=9 THEN PROCTAB
DISPLAY
PRINT G$;
G$=G$+GLK$
IF LENG$ <> N% THEN GOTO BAD
TYPE G$
ENDPROC


.OV
IF Z%=19 THEN GOTO SWAP
IF Z%<32 THEN Z%=32
DELETE AT
TYPE CHR$Z%
ENDPROC

.SWAP
SWAP
ENDPROC

.BAD
DELETE LEFT
TYPE " "
PRINT
PRINT
M%=12
DOTHIS
  PROCMES
  PRINT
TIMES 3
Z%=get
GOTO MOVE


.CURSOR
IF Z%=127 THEN GOTO DEL
IF Z%=175 THEN GOTO UP
IF Z%=174 THEN GOTO DOWN
IF Z%=173 THEN GOTO RIGHT
IF Z%=172 THEN GOTO LEFT
IF Z%=143 THEN GOTO TOP
IF Z%=142 THEN GOTO BOTTOM
ENDPROC

.DEL
DELETE LEFT
IF EOT=FALSE THEN TYPE " "
ENDPROC

.UP
CURSOR UP
ENDPROC
.DOWN
CURSOR DOWN
ENDPROC
.RIGHT
CURSOR RIGHT
ENDPROC
.LEFT
CURSOR LEFT
ENDPROC
.TOP
CURSOR TOP
ENDPROC
.BOTTOM
CURSOR BOTTOM
ENDPROC

.MES
SELECT SEGMENT 7
CURSOR TOP
DOTHIS
  Z$=GLT$
TIMES M%
PRINT GLT$;
M%=M%+1
SELECT TEXT
ENDPROC

.TAAL
DISPLAY
VDU30
PRINT "Ik ken deze taal niet.               "
PRINT "Sorry !"
END
---------------------------------------REM M.MM.NE

EINDE VAN HET SPEL
Laatste spel was met woorden van 
 letters
Wil je met een andere lengte spelen ? 
Nieuwe lengte: 
Er bestaat geen lijst met woorden van 
 letters.
Gevonden in 
 poging
en
Nog een spel ? 
Nee toch!
Dit is de verkeerde lengte !
Probeer nog eens.

--------------------------------------
REM M.MMLNE03
LOT
BAD
MOL
LAM
DAT
DAM
WAT
LAT
TAM
BAS
SAP
TAL
TAB
TAK
TAS
MAF
MAL
MAT
KAM
DIT
TOT
PAN
TIN
PIN
BAK
DAG
------------------------------------
REM M.MMLNE04
HAND
VENT
MIST
KLUS
BAAN
RAAD
AARD
BAND
ZAND
GOED
GEEL
BAAI
ROND
ROOD
LOOD
RAND
------------------------------------
REM M.MMLNE05
GROOT
TREND
ZEVEN
KRANS
KLANT
KRENT
KRANT
FRONT
FRANS
DRANK
KRANK
KLANK
--------------------------------------
REM M.MMLNE06
WISSEL
WONDER
WONING
POLDER
PEUTER
VERDER
WILLEN
WOLLEN
LELIJK
BINNEN
BUITEN
BUNDEL
BITTER
VREEMD
WAARDE
VERMAK
KELDER
MELDEN
VRETEN
VRETER
FOLDER
HOLDER
VRIEND
HANGEN
KACHEL
ECHTER
SLUIER
---------------------------------------
REM M.MMLNE07
NUCHTER
MAANDAG
DINSDAG
HERZIEN
VERZOEK
ZUCHTEN
KLOPPEN
STOPPEN
PRETTIG
VOETBAL
PRINTEN
NICHTJE
VRIJDAG
--------------------------------------
REM M.MMLNE08
INDAMMEN
---------------------------------------
REM M.MMLNE09
BEDRIEGEN
---------------------------------------
--------------------------------------
REM M.NN.FR

FIN DE LA PARTIE
Longueur des mots du dernier jeu: 
 lettres
Faut-il changer la longueur?  
Longueur des mots: 
Il n'y a pas de liste de mots de 
 lettres.
TROUVE EN 
 COUP
S
Encore un jeu ? 
mauvais coup
le mot n'est pas de la bonne longueur
nouvel essai
---------------------------------------
REM M.MMLFR05
GRAND
MOITE
ZEBRE
SUITE
ARBRE
CADRE
BOITE
CABRE
AIDER
COBRA
TABLE
TEMPS
POINT
TAPIS
SONGE
FREIN
TRONC
LONGE
LOUPE
SANTE
BONTE
SINGE
BRAVO
PREUX
FROID
VIEUX
VITRE
BLANC
FLANC
CABRI
CREUX
CRETE
TRAME
---------------------------------------
REM M.MMFRL06
FACILE
DANGER
DANSER
CHANGE
GRANGE
PANSER
PENSER
FOURRE
CRUCHE
TROCHE
PAILLE
TRIPLE
CRIBLE
TRIBUN

---------------------------------------
REM M.MMLFR07
FATIGUE
CLAVIER
FAMILLE
GLACIER
CLAPIER
GLANEUR
PREMIER
AUTOMNE
GLACONS
CHANTER
GROUPER
SINCERE
POUVOIR
GRIMPER
GRAVIER
CROTTIN
FERMIER
DERNIER
PRENDRE
GRATTER
SOTTISE
CABOTIN
MANIERE
CHEMISE
CHARIOT
CHARRUE
TROUVER
MOUVANT
COUVENT
SOUVENT
CONTINU
---------------------------------------
REM M.MM.EN

END OF GAME
Last game was with 
-letter words
Do you wish to alter word length ? 
Word length: 
No list file with words of 
 letters.
Found in 
 guess
es
Another game ? 
bad entry
Wrong word length
try again
---------------------------------------
REM M.MMLEN05
FANCY
PROUD
THREE
SEVEN
EIGHT
FUNNY
SOUND
FRAME
FRANK
FRONT
MIGHT
TIGHT
THUMB
THICK
TRICK
THROW
---------------------------------------
REM M.MMLEN06
 
DEALER
MEMORY
FRIEND
MEMBER
HARDER
CHOOSE
BRANDY
BRUISE
THRONE
THREAT
THRILL
THROAT
ELEVEN
HUNGRY
HUNTER
MANNER
FRAUDE
THRIVE

=======================================