![]() ![]() INFO - FAQ - CC2-Forum - CCPro-Forum |
|
Hallo liebes Forum, hier eine kleine Erweiterung zu Dietmar's Wörterraten-Programm. Begriffe mit Binde-Strich sind hinzu gekommen, sowie Begriffe länger als 32 Zeichen. Zum Beispiel der allen geläufige Begriff: "~~R~~~EN~E~KE~~~-ZU~A~~~NG~-OR~~~NG" Auch kann man jetzt das Programm mittels STRG+1 vorzeitig verlassen, und in den Hostmodus der Open-Maxi wechseln. Viel Freude beim Lösen der neuen Begriffe ;-) das |_ Team ' =========================================================================== ' Demoprogramm: Woerterraten (Hangman, Galgenmaennchen) auf der Open-Maxi ' In OCBASIC 1.11a fuer Open-Maxi von Dietmar Harlos am 18. Oktober 2020 ' =========================================================================== ' '+: Tabellenverschleierung am 19. Oktober 2020, +: Begriffe mit Binde- ' 'strich am 21. Oktober 2020, von "das |_ Team" (Aenderungen markiert: '+,'-) ' --- Definitionen ---------------------------------------------------------- INCLUDE "omax.def" 'Definitionen fuer die Open-Maxi DEFINE string &h2aa 'Buffer an 1. Adresse hinter dem USER-RAM DEFINE buchstaben &h2ff 'Array/Feld/Buffer mit den vom Anwender eingegebenen Buchstaben DEFINE OSVER 168 '+ Open-Maxi V1.0 (fuer nahtlosesn Upload mit 115200 baud DIM bitarray BYTE 'ein Bitarray DIM geloest BIT[1] OF bitarray 'ist HIGH, wenn das Wort komplett geloest wurde DIM kommtvor BIT[2] OF bitarray 'ist HIGH, wenn der vom Anwender eingegebene Buchstabe im Wort vorkommt DIM gefunden BIT[3] OF bitarray 'ist HIGH, wenn Zeichen im Buffer vorkommt DIM a,b,c BYTE 'temporäre Bytevariablen DIM lens BYTE 'Länge des Wortes im Stringbuffer DIM anzb BYTE 'Anzahl der im Buchstabenfeld gebufferten Buchstaben DIM buchstabe BYTE 'vom Anwender eingegebener Buchstabe DIM versuche BYTE 'Anzahl der vom Anwender benoetigten Versuche DIM rot13 BYTE '+ Zwischenvariable fuer die rot13 Verschleierung der Suchwoertet DIM w WORD 'temporäre Wordvariable ' --- Hauptprogramm --------------------------------------------------------- PRINT "Woerterraten auf der Open-Maxi" PrintSpc=ON 'Bei PRINT dezimale Zahlen mit fuehrendem Leerzeichen ausgeben End2Host=ON 'Bei Programmende (siehe END) gleich in den Host-Modus wechseln RANDOMIZE 0 'Hier Zufallsgenerator initialisieren WHILE TRUE anzb=0 'gets (((RAND SHR 1)+16384)/251) '0..130 '- gets (((RAND SHR 1)+16384)/230)'0..142 '+ gewünschtes Wort in Stringbuffer kopieren & Länge in "lens" 'gets(139) '"STRASSENVERKEHRS-ZULASSUNGS-ORDNUNG" '+ 'gets(143) ' (ein ganz langer Begriff zum Testen) '+ geloest=OFF buchstabe=0 versuche=0 WHILE geloest=OFF PRINT "Wort: "; 'teilweise gelöstes Wort ausgeben geloest=ON kommtvor=OFF FOR a=0 TO lens-1 b=PEEK(string+a) 'in Variable "b" ein Zeichen des Wortes IF b=ASC(" ") THEN PUT " " ELSE gefunden=OFF 'stimmt "b" mit Buchstabe aus Buchstabenbuffer überein? IF anzb>0 THEN FOR c=0 TO anzb-1 IF PEEK(buchstaben+c)=b THEN gefunden=ON NEXT c END IF IF gefunden THEN 'falls ja, ausgeben und Bitvariable "kommtvor" auf HIGH setzen PUT b IF b=buchstabe THEN kommtvor=ON ELSE PUT ASC("~") 'falls nein, Bindestrich an Position ausgeben und '+~ geloest=OFF ' Bitvariable "geloest" auf LOW setzen END IF END IF NEXT a IF buchstabe THEN 'ausgeben, ob der Buchstabe im Wort vorkommt. PRINT "Der "; '+ IF buchstabe=ASC("-") THEN '+ PRINT "Bindestrich "; '+ ELSE '+ PRINT "Buchstabe "; END IF '+ PUT 34 PUT buchstabe PUT 34 PRINT " kommt im Wort "; IF kommtvor=OFF THEN PRINT "nicht "; PRINT "vor!" END IF IF geloest THEN GOTO abbruch 'Wort gelöst? Dann WHILE..WEND abbrechen. REPEAT REPEAT 'einen gültigen Buchstaben vom Anwender eingeben lassen PRINT "Bitte Buchstabe eingeben: "; GET buchstabe IF buchstabe= 1 THEN '+ oder jetzt neues PRINT "CCTRL-BASIC OM"; '+ Programm hoch laden, PUT OSVER '+ dazu ID-String END '+ der Open-Maxi ausgeben, END IF '+ fuer Upload mit 115200 baud IF buchstabe>=ASC("a") AND buchstabe<=ASC("z") THEN buchstabe=buchstabe-32 END IF IF (buchstabe<ASC("A") OR buchstabe>ASC("Z")) AND buchstabe <> ASC("-") THEN '+ PRINT "Das ist kein gueltiger Buchstabe!" buchstabe=0 END IF UNTIL buchstabe<>0 gefunden=OFF 'wurde der Buchstabe schon einmal probiert? IF anzb>0 THEN FOR c=0 TO anzb-1 IF PEEK(buchstaben+c)=buchstabe THEN gefunden=ON NEXT c END IF IF gefunden THEN PRINT "Den "; '+ IF buchstabe=ASC("-") THEN '+ PRINT "Bindestrich"; '+ ELSE '+ PRINT "Buchstaben"; END IF '+ PRINT " hast Du schon probiert!" END IF UNTIL gefunden=OFF POKE buchstaben+anzb,buchstabe 'Buchstabe in den Buchstabenbuffer einfügen ADD anzb,1 'Anzahl der Buchstaben um eins erhöhen ADD versuche,1 'Anzahl der Versuche um eins erhöhen #abbruch WEND PRINT "Glueckwuensch! Du hast das Wort geloest! Du hast";versuche;" Versuche benoetigt." WEND END 'Zurueck in den Hostmodus. Neustart mit RETURN-Taste. ' --- Subroutinen und Funktionen -------------------------------------------- ' PROCEDURE gets(c) ; 0 <= c <= 130 ' ' Diese Subroutine/Prozedur sucht den gewünschten String in der Tabelle ' namens "woerter" und übernimmt ihn in den Stringbuffer. Die Länge des ' Strings wird in der Variable "lens" zurückgeliefert. PROCEDURE gets(c) w=0 WHILE c 'String in Tabelle suchen WHILE LOOKTABBYTE(woerter_rot13,w) ADD w,1 WEND ADD w,1 SUB c,1 WEND lens=0 WHILE LOOKTABBYTE(woerter_rot13,w) 'String Zeichen fuer Zeichen in Stringbuffer ' POKE string+lens,LOOKTABBYTE(woerter,w) '- buchstabe=LOOKTABBYTE(woerter_rot13,w) '+ IF buchstabe < 65 OR buchstabe > 90 THEN '+ Suchwort aus der Tabelle POKE string+lens,buchstabe '+ ELSE '+ rot13=LOOKTABBYTE(woerter_rot13,w) '+ durch erneute Anwendung der rot13=rot13-64 '"A","B",..,"Z" codiert wie Alphabetposition:(1,2,..,26) '+ rot13-Funktion entschleiern rot13=rot13+13:IF rot13>26 THEN rot13=rot13 MOD 26 '+ rot13=rot13+64 '"A","B",..,"Z" codiert gem. ASCII-Code: (65,66,..,90) '+ POKE string+lens,rot13 '+ END IF '+ ADD w,1 ADD lens,1 WEND RETURN END PROCEDURE ' --- Tabellen -------------------------------------------------------------- ' Die Woerterliste stammt von http://fx-850p.dharlos.de/GAMES.LST. Sie ist mit '+ ' dem OCBASIC-Hilfsprogramm OMJROT13.BAS verschleiert worden, um niemandem den '+ ' Spass am Erraten der in der Tabelle enthaltenen Woerter zu verderben... :-) '+ '+ TABLE woerter_rot13 BYTE 'erzeugt mittels OCBASIC-Programm 'OMJROT13.BAS' '+ "OEHGGBFBMVNYCEBQHXG",0,"ONEG FVZCFBA",0,"JBREGRE ENGRA",0 "YHPXL YHXR",0,"QNTBOREG QHPX",0,"NFGREVK HAQ BORYVK",0 "GNFGNGHE",0,"GNFPURAYNZCR",0,"JBREGREOHPU",0,"ZVXEBNZCRER",0 "CUNFRAIREFPUVROHAT",0,"ORQVRAHATFNAYRVGHAT",0,"SERDHRAMNRAQREHAT",0 "IBTRYTRMJVGFPURE",0,"QVFXRGGR",0,"ERPUGFPUERVOERSBEZ",0 "REARFG URZVATJNL",0,"QRZBAFGENGVBA",0,"PUNZCNTARE",0,"PUNEYVR PUNCYVA",0 "ORIBRYXREHATFRAGJVPXYHAT",0,"ORJNRUEHATFURYSRE",0 "OVOREENGGR",0,"ORHGRYFCEVATZNHF",0,"REQBRYENSSVAREVR",0 "NEORVGARUZRE",0,"ARNAQREGUNYRE",0,"NZNMBANF",0,"FHRQJRFGNSEVXN",0 "NGYNAGVFPURE BMRNA",0,"LBXBUNZN",0,"ARHFPUBGGYNAQ",0,"RY FNYINQBE",0 "GEBCVFPURE ERTRAJNYQ",0,"OREAFGRVAMVZZRE",0,"NETYVFGVTR GNRHFPUHAT",0 "YBHVF NEZFGEBAT",0,"NEFRAIRETVSGHAT",0,"NEGVXHYNGVBA",0 "NEGVFPUBPXR",0,"NGBZFCREEIREGENT",0,"NGZBFCUNRER",0,"ONUAUBSFZVFFVBA",0 "ONAXORNZGRE",0,"ONANARAFGRPXRE",0,"ONEPRYBAN",0,"ONEBZRGRE",0 "ONHTRABFFRAFPUNSG",0,"ENQVB URESBEQ",0,"ORYNTREHATFMHFGNAQ",0 "ORATNYVFPURF SRHRE",0,"ORENGHATFFGRYYR",0,"ORARYHKFGNNGRA",0 "OREZHQNQERVRPX",0,"XHESHREFGRAQNZZ",0,"XBATERFFUNYYR",0 "OVOYVBTENCUVR",0,"OYHSS",0,"OYVAQRAFPUEVSG",0,"FPUZRGGREYVATR",0 "OYHGRTRY",0,"XERQVGVAFGVGHG",0,"OBBTVR JBBTVR",0,"QRHGFPUR CERFFRNTRAGHE",0 "QRMRAGENYVFNGVBA",0,"QVNRGRAREUBRUHAT",0,"QVSSRERAGVNYERPUAHAT",0 "VAGRTENYERPUAHAT",0,"QVABFNHEVRE",0,"QBCCYRERSSRXG",0,"QENVFVAR",0 "QERVFFVTWNRUEVTRE XEVRT",0,"QERFPUZNFPUVAR",0,"QEHPXOHPUFGNOR",0 "TYRVPUFRVGVTRF QERVRPX",0,"QHQRYFNPXCSRVSRE",0,"QHNYFLFGRZ",0 "QHZCVAT",0,"ORETXEVFGNYY",0,"CLEVG",0,"FPUJRSRYFNRHER",0,"DHVAGRGG",0 "XABYYRAOYNRGGRECVYM",0,"CSVSSREYVAT",0,"PUNZCVTABA",0,"GNTCSNHRANHTR",0 "FPUJNYORAFPUJNAM",0,"NQZVENY",0,"FGRVAOHGG",0,"EBGONEFPU",0 "EBGXRUYPURA",0,"JRVFFR ONPUFGRYMR",0,"OHPUSVAX",0,"FPUJNEMRE YRBCNEQ",0 "ANFRAONRE",0,"MVORGXNGMR",0,"JNFPUONRE",0,"BOREXVRSREUBRUYR",0 "ZVPXL ZNHF",0,"TBBSL",0,"YHSGEBRUER",0,"UVEANAUNATQEHRFR",0 "ERANVFFNAPR",0,"EBZ",0,"CNOYB CVPNFFB",0,"NYVPR VZ JHAQREYNAQ",0 "IBEQREENQSRQREHAT",0,"XHCCYHATFCRQNY",0,"OEHGGBERTVFGREGBAARA",0 "XBZZNAQBOEHRPXR",0,"ZNFPUVARAENHZ",0,"BOREIBYGN",0,"IRERVAGR ANGVBARA",0 "RYSRAORVAXHRFGR",0,"FVREEN YRBAR",0,"ZNHEVGVHF",0,"FGNYVATENQ",0 "FGERCGBXBXXRA",0,"FPUNHSRYENQQNZCSRE",0,"MVTNERGGR",0,"FGRVAXBUYRASBREQREHAT",0 "FGVAXZBEPURY",0,"SVANAMIREJNYGHAT",0,"FGVRSZHRGGREPURA",0 "FGVYYRORA",0,"FGVZZTNORY",0,"NYOREG RVAFGRVA",0,"FGLK",0,"FHOFGVGHGVBA",0 "FHRQNSEVXN",0,"FGHQRAG",0,"BCRA-ZVPEB",0,"BCRA-ZVAV",0,"BCRA-ZNPEB",0 "BCRA-ZNKV",0,"BCRA-PBAGEBY",0,"QBANH-QNZCSFPUVSSSNUEGFTRFRYYFPUNSG",0 "ERANGHEVREHATFZNFFANUZR",0,"XENSGSNUEMRHT-UNSGCSYVPUGIREFVPUREHAT",0 "FGENFFRAIREXRUEF-MHYNFFHATF-BEQAHAT",0,"YNOBEARGMTRENRG",0 "OEBGXNFGRA",0,"PBZZBQBER",0,"SVANAMQVRAFGYRVFGHATFHAGREARUZRAFOEBFPUHRERAIBEFGRYYHATFSNPUXENRSGRIREFNZZYHAT",0 0 END TABLE ' --- Programmende ---------------------------------------------------------- Passender Link: Hilfsprogamm zur ROT13 Verschleierung der Suchbegriffe Meine Homepage: http://visit.ghn-sensorik.de/L-Team/Lvm/ |
Antwort schreiben |