วิธีเรียกใช้ฟังก์ชันโดยไม่ต้องกดปุ่ม

ฉันมีการบ้านมอบหมายให้ทำเกม ดังนั้นฉันจึงสร้างเกมที่สร้างตัวเลขสุ่ม แสดงตัวเลข หลังจากนั้นไม่กี่วินาที ตัวเลขก็หายไป และผู้ใช้ต้องป้อนตัวเลขจากมากไปน้อย เกมทำงานได้ดีและผลลัพธ์ทั้งหมดถูกต้อง... แต่ปัญหาคือฉันได้สร้างฟังก์ชันต่างๆ สำหรับการสร้างตัวเลข การจัดเรียง การยอมรับ... และฉันต้องกดปุ่ม Enter สองสามครั้งในแต่ละครั้งที่มีการเรียกใช้ฟังก์ชัน

มีวิธีที่ฟังก์ชันเหล่านี้ถูกเรียกใช้โดยไม่ต้องกดปุ่มใด ๆ เพื่อให้โปรแกรมทำงานโดยไม่ต้องกดปุ่ม Enter หรือไม่?


person user1937928    schedule 30.12.2012    source แหล่งที่มา
comment
คุณสร้างเกมเหรอ? โค้ดตัวอย่างใดที่คุณต้องการแบ่งปันกับเรา เพราะการที่คุณบอกว่าคุณสร้างเกม จริงๆ แล้วคุณไม่ได้พูดอะไรมาก   -  person Darin Dimitrov    schedule 30.12.2012
comment
ฉันได้เพิ่มแท็ก sleep ให้กับคำถามของคุณ คุณควรดูคำถามก่อนหน้าที่มีแท็กนั้นเพื่อดูเบาะแสบางอย่าง   -  person Jonathan Wakely    schedule 30.12.2012
comment
เป็นไปได้มากว่าคุณจัดระเบียบโค้ดของคุณในลักษณะที่รออินพุตจากผู้ใช้ (หลายครั้ง) ก่อนที่จะดำเนินการต่อในขั้นตอนถัดไป   -  person Bart van Ingen Schenau    schedule 30.12.2012


คำตอบ (1)


ดึงมาจาก จับภาพอักขระจากมาตรฐาน ป้อนข้อมูลโดยไม่ต้องรอให้กด Enter

นั่นเป็นไปไม่ได้ในแบบพกพาใน C ++ บริสุทธิ์เพราะมันขึ้นอยู่กับเทอร์มินัลที่ใช้มากเกินไปซึ่งอาจเชื่อมต่อกับ stdin (โดยปกติแล้วพวกมันจะถูกบัฟเฟอร์บรรทัด) อย่างไรก็ตาม คุณสามารถใช้ไลบรารีเพื่อสิ่งนั้นได้:

  1. conio สามารถใช้ได้กับคอมไพเลอร์ windows ใช้ฟังก์ชัน _getch() เพื่อให้อักขระแก่คุณโดยไม่ต้องรอปุ่ม Enter ฉันไม่ใช่นักพัฒนา windows บ่อยนัก แต่ฉันเคยเห็นเพื่อนร่วมชั้นรวม conio.h ไว้แล้วใช้งาน ดูconio.hที่วิกิพีเดีย โดยแสดงรายการ getch ซึ่งได้รับการประกาศว่าเลิกใช้แล้วใน Visual C++
  2. คำสาปพร้อมใช้งานสำหรับ linux การใช้งานคำสาปที่เข้ากันได้ก็มีให้สำหรับ windows เช่นกัน นอกจากนี้ยังมีฟังก์ชัน getch (ลอง man getch เพื่อดู manpage ของมัน) ดูคำสาปได้ที่วิกิพีเดีย

ฉันอยากจะแนะนำให้คุณใช้คำสาปหากคุณต้องการความเข้ากันได้ข้ามแพลตฟอร์ม ที่กล่าวว่าฉันแน่ใจว่ามีฟังก์ชั่นที่คุณสามารถใช้เพื่อปิดการบัฟเฟอร์บรรทัด (ฉันเชื่อว่านั่นเรียกว่า "โหมดดิบ" ซึ่งต่างจาก "โหมดสุก" (ดูที่ man stty) Curses จะจัดการเรื่องนั้นให้คุณแบบพกพาถ้าฉันจำไม่ผิด

person Syntactic Fructose    schedule 30.12.2012