Einmaliges überprüfen ob return gedrückt wurde?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Einmaliges überprüfen ob return gedrückt wurde?

    Hallo Leute,

    ich bin immernoch bei meinem Schere, Stein, Papier zugange und habe jetzt das Problem, dass ich mir in den Kopf gesetzt habe, mit dem Satz "Herzlich Willkommen zu Schere Stein Papier. Drücken Sie Enter um zu Starten" beginnen möchte. Wenn ich aber keypress registriere kann ich readline nicht mehr auslösen! Oder übersehe ich etwas?

    So sieht es bis jetzt aus (etwas unaufgeräumt - bin noch beim ausprobieren):

    JavaScript-Quellcode

    1. const { createInterface } = require('readline')
    2. const keypress = require('keypress')
    3. const rl = createInterface({
    4. input: process.stdin,
    5. output: process.stdout,
    6. //terminal: false
    7. })
    8. var kpvar = false
    9. keypress(process.stdin)
    10. const possibilitys = new Array('Schere', 'Stein', 'Papier')
    11. var points = new Array(0,0)
    12. module.exports = {
    13. play: play,
    14. }
    15. function play(){
    16. console.log(`Herzlich Willkommen zu Schere Stein Papier\nDrücken Sie Enter um zu Starten\n`)
    17. process.stdin.on('keypress', function(ch, key){
    18. //console.log(key)
    19. if(kpvar == false){
    20. console.log('kpvar ist false')
    21. kpvar = true
    22. } else {
    23. console.log('kpvar ist true')
    24. }
    25. })
    26. /*rl.on('line', (input) => {
    27. console.log(`${input.length}`)
    28. //displaypoints()
    29. //getchoice(input)
    30. //computermove()
    31. //displaypossibilitys()
    32. })*/
    33. }
    34. function displaypossibilitys(){
    35. possibilitys.forEach(function(input){
    36. console.log(input)
    37. })
    38. }
    39. function displaypoints(){
    40. console.log(`Aktueller Spielstand:\nMensch ${points[0]} Computer ${points[1]}\n`)
    41. }
    42. function randomchoice(){
    43. return possibilitys[Math.floor(Math.random() * 3)]
    44. }
    45. function computermove(){
    46. setTimeout(() => console.log('"Ching"'), 1000)
    47. setTimeout(() => console.log('"Chang"'), 2000)
    48. setTimeout(() => console.log('"Chong"'), 3000)
    49. setTimeout(() => console.log(`\nComputer hat: ${randomchoice()}`), 4000)
    50. }
    51. function getchoice(input){
    52. if( possibilitys.includes(input) ){
    53. console.log(input)
    54. } else {
    55. console.log("Willst du spielen oder nicht?")
    56. }
    57. }
    Alles anzeigen
    Ich wollte mir helfen mit einer Variable die ich auf true setzte wenn einmal return gedrückt wurde - funktioniert auch aber seltsamerweise wird der key mit ausgegeben obwohl das gar nicht veranlasst wurde... ???

    Danke schonmal
  • Ok. Ich verstehe aber nicht wie/wo ich keypress abfange.

    JavaScript-Quellcode

    1. const readline = require('readline')
    2. const rl = readline.createInterface({
    3. input: process.stdin,
    4. output: process.stdout,
    5. //terminal: false
    6. })
    7. readline.emitKeypressEvents(process.stdin)
    8. const possibilitys = new Array('Schere', 'Stein', 'Papier')
    9. var points = new Array(0,0)
    10. module.exports = {
    11. play: play,
    12. }
    13. function play(){
    14. console.log(`Herzlich Willkommen zu Schere Stein Papier\nDrücken Sie Enter um zu Starten\n`)
    15. /*rl.on('line', (input) => {
    16. console.log(`${input.length}`)
    17. //displaypoints()
    18. //getchoice(input)
    19. //computermove()
    20. //displaypossibilitys()
    21. })*/
    22. rl.on('keypress', (key) => {
    23. console.log('test')
    24. })
    25. }
    26. function displaypossibilitys(){
    27. possibilitys.forEach(function(input){
    28. console.log(input)
    29. })
    30. }
    31. function displaypoints(){
    32. console.log(`Aktueller Spielstand:\nMensch ${points[0]} Computer ${points[1]}\n`)
    33. }
    34. function randomchoice(){
    35. return possibilitys[Math.floor(Math.random() * 3)]
    36. }
    37. function computermove(){
    38. setTimeout(() => console.log('"Ching"'), 1000)
    39. setTimeout(() => console.log('"Chang"'), 2000)
    40. setTimeout(() => console.log('"Chong"'), 3000)
    41. setTimeout(() => console.log(`\nComputer hat: ${randomchoice()}`), 4000)
    42. }
    43. function getchoice(input){
    44. if( possibilitys.includes(input) ){
    45. console.log(input)
    46. } else {
    47. console.log("Willst du spielen oder nicht?")
    48. }
    49. }
    Alles anzeigen
    auch bei

    JavaScript-Quellcode

    1. readline.on('keypress', (key) => {
    2. console.log(key)
    3. })
    passiert nichts. Was mach ich falsch?

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Felix K. ()

  • In etwa so:

    JavaScript-Quellcode

    1. const readline = require('readline')
    2. const rl = readline.createInterface({
    3. input: process.stdin,
    4. output: process.stdout,
    5. })
    6. readline.emitKeypressEvents(process.stdin, rl)
    7. process.stdin.on('keypress', key => {
    8. if (key === '\t') {
    9. console.log('tapped')
    10. }
    11. })
    12. rl.on('line', (input) => {
    13. console.log(`Ya say ${input}`)
    14. })
    Alles anzeigen
  • JavaScript-Quellcode

    1. process.stdin.on('keypress', key => {
    2. //console.log(`${key}`)
    3. if( key === '\r'){
    4. console.log('return wurde gedrückt')
    5. }
    6. if( key === 't'){
    7. console.log('wurde gedrückt') // tt wurde gedrückt
    8. }
    9. })
    Soweit so gut aber ich verstehe nicht warum ich das t nochmal als Ausgabe bekomme? Ich mein für mein Vorhaben benötige ich das nicht wirklich aber was ist wenn ich jetzt etwas auführen möchte wenn t gedrückt wird?

    JavaScript-Quellcode

    1. function play(){
    2. console.log(`Herzlich Willkommen zu Schere Stein Papier\nDrücken Sie Enter um zu Starten\n`)
    3. /*rl.on('line', (input) => {
    4. console.log(`${input.length}`)
    5. //displaypoints()
    6. //getchoice(input)
    7. //computermove()
    8. //displaypossibilitys()
    9. })*/
    10. process.stdin.on('keypress', key => {
    11. //console.log(`${key}`)
    12. if( key === '\r'){
    13. console.log('return was pressed') // return was pressed
    14. if( key === 't'){
    15. testt() // ttest
    16. }
    17. })
    18. }
    19. function testt(){
    20. console.log('test')
    21. }
    Alles anzeigen
    Ich könnte mir vorstellen dass die Ausgabe irgendwann stört. Kann ich die irgendwie unterdrücken oder abschalten?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Felix K. ()

  • Nochmal kurz von vorne...

    mit der Zeile

    Quellcode

    1. readline.emitKeypressEvents(process.stdin)
    sage ich dass das event keypress auf dem process.stdin Eingang ausgelöst werden soll, richtig? Ich möchte aber dass sobald einmal return gedrückt wurde, er aufhören soll das event auszulösen. Geht das überhaupt? Und mir ist noch nicht ganz klar wie ich das Pause-Event auslöse... Ich muss dazu sagen dass mein English eingerostet ist und ich noch dabei bin das aufzurfrischen darum werde ich aus den Docs nicht immer schlau. Aber ich habe mir das Buch Nodejs gekauft und bin dabei das zu lesen... Nur so als info :)

    Grüße