วิธีเขียนเกมในภาษาปาสคาล การสร้างเกมคอมพิวเตอร์ในภาษาปาสคาล

ทุกวันนี้ เกมง่ายๆ ที่ไม่มีกราฟิกหรือ เอฟเฟกต์เสียงกำลังประสบกับการเกิดใหม่ เมื่อเล่น ผู้ใช้จะเน้นที่โครงเรื่อง ไม่ใช่เทคนิคทางศิลปะ ภาษาปาสคาลเหมาะอย่างยิ่งสำหรับการสร้างเกมดังกล่าว

คำแนะนำ

  • ดาวน์โหลดคอมไพเลอร์ภาษา Pascal จาก หน้าถัดไป- http://edn.embarcadero.com/article/20803 อ่านข้อกำหนดการใช้งานสำหรับสิ่งนี้ แพคเกจซอฟต์แวร์จากนั้นติดตั้ง
  • ลองสร้างเกมที่ผู้เล่นจะต้องเดาตัวเลขในช่วงตั้งแต่ 0 ถึง 100 ขั้นแรกให้ป้อนชื่อของโปรแกรม: โปรแกรม ugadayka;
  • เชื่อมต่อโมดูล CRT: ใช้ crt;
  • แสดงถึงตัวแปรดังต่อไปนี้:var
  • zagadka,mnenie,popytki:จำนวนเต็ม;

  • เริ่มต้นโปรแกรมโดยการล้างหน้าจอและตัวแปร และกำหนดค่าสุ่มหลอกให้กับตัวเลขที่ซ่อนอยู่: เริ่มต้น
  • zagadka:=int(rnd*100);

  • ให้คอมพิวเตอร์ถามผู้ใช้ว่าเขาคิดว่าตัวเลขที่ซ่อนอยู่คืออะไรจนกว่าเขาจะเดาได้: ในขณะที่ไม่ใช่ mnenie=zagadka ทำ
  • popytki:=popytki+1;

    writeln("หมายเลขความพยายาม ",popytki,"");

    write("คุณคิดว่าเลขอะไรถูกซ่อนอยู่?");

    ถ้า zagadka>mnenie แล้ว writeln("ไม่ ตัวเลขที่ซ่อนอยู่นั้นมากกว่า!")

    else writeln("ไม่ จำนวนที่ซ่อนอยู่น้อยกว่า!")

  • หลังจากเดาตัวเลขได้แล้ว การทำซ้ำเหตุการณ์ข้างต้นโดยอัตโนมัติจะหยุดลง การดำเนินการจะเริ่มขึ้น บรรทัดต่อไปนี้โปรแกรม ในนั้น ให้ทำให้เครื่องแสดงข้อมูลที่ผู้ใช้เดาตัวเลข: writeln("Congratulations! You Guessed the number on the try number ",popytki." ซึ่งจริงๆ แล้วเท่ากับ ",zagadka,".");
  • ปุ่ม:=ปุ่มอ่าน

  • ป้อนตัวดำเนินการเพื่อสิ้นสุดโปรแกรม: end
  • บันทึกโปรแกรมภายใต้ชื่อที่ต้องการโดยใช้ไฟล์รายการเมนู -> บันทึกเป็น ในอนาคต หลังจากการแก้ไขแต่ละครั้ง ให้บันทึกโดยกดปุ่ม F2
  • หากต้องการรันโปรแกรมเพื่อดำเนินการ ให้กดปุ่ม Control และ F9 พร้อมกัน
  • หลังจากที่โปรแกรมทำงานเสร็จแล้วเพื่อดูว่ามันแสดงอะไรบนหน้าจอทันทีก่อนให้กดพร้อมกัน ปุ่ม Altและ F5 หากต้องการกลับไปที่ตัวแก้ไข ให้กดคีย์ผสมเดียวกันอีกครั้ง
  • โพสต์แห่งความคิดถึงของเล่นที่เราเขียนเพื่อตัวเองในวัยเด็ก
    ปีนผ่านพื้นที่เปิดโล่ง แอพสโตร์กำลังมองหา ของเล่นอีกชิ้นสำหรับ iPad ของฉัน ฉันเจอของเล่นเก่าๆ “Brothers Pilots” ฉันซื้อมันทันที ติดตั้งและเสร็จสิ้นในครั้งเดียว (อาจจะ 3 ครั้งแล้ว) แต่เหนือสิ่งอื่นใด ฉันยังคงติดอยู่กับตู้เย็นในตอนนี้ ปริศนานี้กวนใจฉันจริงๆ

    และทันใดนั้นฉันก็จำได้ว่าย้อนกลับไปสมัยเรียน หลังจากเดินผ่านตู้เย็น ปริศนาก็ครอบงำฉันมากจนฉันเขียนของเล่นของตัวเองในภาษาปาสคาล - โปรแกรมจำลองปริศนา แต่มันไม่เพียงแค่เล่นซ้ำเกมต้นฉบับเท่านั้น แต่ยังให้คุณเลือกขนาดของสนาม มีตัวช่วย ความสามารถในการบันทึกและเล่นเกมต่อจากที่ก่อนหน้านี้หลังจากออก

    หลังจากเรียกข้อมูลสำรองเก่าแล้ว ฉันพบเกมต้นฉบับ ฉันเปิดตัวมันใน Dosbox และหายไป โลกภายนอกสองสามชั่วโมง


    ปริศนาต้นฉบับ สังเกตคอลัมน์ด้านซ้ายที่เปิดอยู่และตำแหน่งของประตู

    ประเด็นคืออะไร?

    แก่นแท้ของปริศนานั้นค่อนข้างง่าย มีวาล์วขนาด 4 x 4 ชิ้นจำเป็นต้องวางวาล์วทั้งหมดไว้ในแนวนอน “ แต่มีความแตกต่างกันนิดหน่อย” (c): เมื่อคุณหมุนวาล์ว วาล์วทั้งหมดในคอลัมน์และแถวที่วาล์วนี้ตั้งอยู่จะหมุนไปพร้อมกับมัน และนี่คือจุดเริ่มต้นของความสนุก!
    ครั้งแรกที่ฉันนั่งลงเพื่อเล่นปริศนานี้ในภารกิจดั้งเดิม และเล่นมันตอนสมัยเรียน ฉันอาจใช้เวลา 40 นาทีในการทำมันให้สำเร็จ ไม่น้อยไปกว่านั้น แต่ผมชอบมันมากจนเล่นไปเล่นไปเล่นไป...
    แต่ฉันต้องการมากกว่านี้: ความสามารถในการบันทึก การเล่นเกม, สร้าง ระดับที่แตกต่างกันและเปลี่ยนขนาดของสนามให้เข้าใจอัลกอริธึมของเกม
    แล้วฉันก็รู้ว่าถ้าฉันชอบปริศนาและอยากลอง ตาชั่งที่แตกต่างกันสนามเล่นแล้วไม่ควรรออากาศริมทะเล มีทางเดียวเท่านั้นที่จะนำเกมนี้ไปใช้ด้วยตัวเอง

    เอาล่ะ มาเริ่มกันเลย!

    ฉันไม่สามารถระบุวันที่แน่นอนในการสร้างเกมได้ แต่แน่นอนว่ามันเป็นช่วงปิดภาคเรียนหรือช่วงเริ่มต้นของวิทยาลัย ในช่วงหลายปีที่ผ่านมาฉันพูดภาษาปาสคาลได้คล่อง ที่สถาบันฉันแก้ไขปัญหาเพื่อเงินช่วยเขียนรายวิชาและโดยทั่วไปแล้วมันเป็นภาษาเชิงตรรกะที่ยอดเยี่ยม ดังนั้นจึงตัดสินใจเขียนของเล่นลงไป
    แม้ว่าฉันจะรู้วิธีการนำกราฟิกไปใช้ใน DOS แต่ฉันก็ตัดสินใจไม่ทำ แอปพลิเคชั่นกราฟิก- นี่เป็นเพราะความจริงที่ว่ามันจะเป็นรถบั๊กกี้และช้ามาก ซึ่งประการแรกฉันต้องการนำไปใช้โดยเร็วที่สุด แอปพลิเคชันนี้และการใช้กราฟิกจะใช้เวลานาน และประการที่สอง มุมมองข้อความฉันชอบมันดีกว่า แม้ว่าเมื่อมองย้อนกลับไป สำหรับฉันแล้วดูเหมือนว่าฉันจะทำได้ดีกว่านี้กับกราฟิกและเพิ่มการรองรับเมาส์
    งานนั้นง่ายมาก: สร้างเกมที่เรียบง่ายและสวยงามซึ่งไม่น่าอายที่จะอวดได้ ในบรรดาคุณสมบัติต่างๆ: ความช่วยเหลือ, ความสามารถในการบันทึกและหลังจากเริ่มเกมเพื่อดำเนินการต่อจากช่วงเวลาที่หยุด, ความสามารถในการเปลี่ยนขนาดของสนามแข่งขัน แถมสีสันและความสง่างามอีกเล็กน้อย

    การนำไปปฏิบัติ

    ฉันจะไม่วิเคราะห์ซอร์สโค้ดและตรรกะของโปรแกรมทั้งหมดอย่างเต็มที่ เพราะมันชัดเจน และสิ่งที่ไม่ชัดเจนก็ชัดเจนจากโค้ด แต่ฉันจะกล่าวถึงรายละเอียดเพิ่มเติมสองสามจุด
    พื้นฐานของเกมคืออาร์เรย์ข้อความขององค์ประกอบ NxN โดยที่ N สามารถเท่ากับ 2, 4, 8 และ 16 อาร์เรย์จะเต็มไปด้วยอักขระ X และ Y เพียงสองตัวเท่านั้น ตำแหน่งเคอร์เซอร์คือตำแหน่งขององค์ประกอบอาร์เรย์ปัจจุบัน ฉันกับเจ เมื่อกลับองค์ประกอบอาร์เรย์ X จะถูกแทนที่ด้วย Y และ Y ด้วย X ในคอลัมน์และแถวของอาร์เรย์ นอกจากนี้ยังมีปุ่มลัด (F1-F4, F10) ที่ให้คุณโทรหา Help, Save/Load, Create และ Exit ทุกอย่างชัดเจนที่นี่ และวิธีการนำไปใช้นั้นง่ายและเราจะไม่เน้นรายละเอียดนี้

    สิ่งที่น่าสนใจที่สุดจากมุมมองของการศึกษาคือขั้นตอน ริฟท์.*

    * - สังเกตว่าเหตุใดจึงเกิดความรวดเร็ว

    ในสมัยนั้นเพื่อประหยัดเงิน ข้อความ SMS จึงถูกเขียนด้วยการทับศัพท์ เราจะจำจดหมายได้อย่างไร” ” ถูกแทนที่ด้วยการรวมกัน “ ” แต่เพื่อประหยัดพื้นที่ ฉันจึงแทนที่ด้วยตัวอักษรที่ไม่ได้ใช้และสะกดคล้ายกัน “ - นี่คือที่มาของชื่อ ริฟท์(แบบอักษร) ในทำนองเดียวกันจดหมาย “ เอ็กซ์” (เอ็กซ์) แทนที่ตัวอักษร “ เอ็กซ์” (รัสเซีย “ ฮา”).

    เนื่องจากฉันตัดสินใจใช้โหมดข้อความสำหรับเกม ฉันจำเป็นต้องมีจดหมายเพื่อเปลี่ยนวาล์ว สิ่งนี้เกี่ยวข้องกับตัวอักษรที่จะแสดงวาล์วในแนวตั้งและ ตำแหน่งแนวนอน- ผู้สมัครเพียงคนเดียวที่เหมาะสมกับวัตถุประสงค์เหล่านี้คือ ตัวอักษรละติน“น” และ “ซ” ตัวอักษร "Z" มีลักษณะคล้ายตัวอักษร N ที่วางอยู่ข้างๆ โดยขยายออกเท่านั้น
    ฉันลองใช้ตัวเลือกนี้และไม่พอใจกับมัน และฉันก็ตระหนักว่าฉันต้องทำอะไรบางอย่างด้วยตัวเองบ้าง ทางเลือกอื่น- ฉันกำลังคิดที่จะเขียนเวอร์ชันกราฟิกอยู่แล้ว เมื่อฉันเจอโปรแกรม Pascal "Matrix" จากผู้เขียน Abrarov A.M. - โปรแกรมเริ่มต้นในลักษณะเดียวกับ "เมทริกซ์" ตัวแรก - แสดงบรรทัดบนหน้าจอเพื่อค้นหาโค้ด จากนั้นสัญลักษณ์อักษรอียิปต์โบราณก็เริ่มโปรยปรายลงมา ยิ่งกว่านั้นสิ่งนี้จะถูกนำไปใช้ในโหมดข้อความเท่านั้น

    โปรแกรมการศึกษาขนาดเล็กเกี่ยวกับโปรแกรม Matrix.pas

    โปรแกรมนี้สวยงามและสง่างามมากในยุคนั้น แล้วมันก็ทำให้ฉันมีความสุขมาก สิ่งที่น่าสนใจที่สุดคือมีการนำไปใช้ที่นั่น แบบอักษรเต็ม, จำนวน 208 ตัวอักษร! แต่ฉันคิดว่าผู้เขียนได้นำโปรแกรมเช่น "russifier" ของเราไปใช้เฉพาะกับอักษรอียิปต์โบราณเท่านั้นและจัดแจงใหม่เพื่อตัวเขาเอง

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

    สิ่งที่สำคัญที่สุดคือในโปรแกรมนั้น “krakozyabr” จะมีแบบอักษรของตัวเอง! และก็โหลดแล้ว ฉันยืมขั้นตอนการโหลดนี้มา แน่นอนว่าต้องเปลี่ยนแปลงเล็กน้อย
    คำไม่กี่คำเกี่ยวกับการทำงานกับแบบอักษร

    ใน MS-DOS นั้น BIOS รองรับการทำงานกับฟอนต์บิตแมป คุณสมบัติ BIOS ช่วยให้คุณสามารถรับและติดตั้งได้ แบบอักษรที่กำหนดเองและยังได้รับแบบอักษรจากตัวสร้างอักขระของอะแดปเตอร์วิดีโออีกด้วย แบบอักษรที่ติดตั้งทั้งหมดมีความกว้างเท่ากัน 8 จุดและความสูงสามารถมีค่าคงที่ได้สามค่า - 8, 14 หรือ 16 จุด ค่าความสูงของแบบอักษรเฉพาะถูกกำหนดโดยโหมดวิดีโอที่โหลดแบบอักษร ความสูงของแบบอักษร 8 จุดสอดคล้องกับโหมดวิดีโอบรรทัด 50/43 ความสูงของแบบอักษร 14 จุดสอดคล้องกับโหมดวิดีโอ 25 บรรทัดสำหรับ EGA และความสูงแบบอักษร 16 จุดสอดคล้องกับโหมดวิดีโอ VGA 25 บรรทัด

    เราจะใช้โหมดวีดีโอ 16 สี ขนาด 40x25 ตัวอักษร ในโหมดวิดีโอนี้ อักขระแต่ละตัวจะมีอาร์เรย์จุดขนาด 8x16 พูดง่ายๆ ก็คือ อักขระแต่ละตัวแทนขนาด 16 ไบต์ โดยที่บิตที่ตั้งค่าเป็น 1 ไบต์หมายความว่าอักขระนั้นเป็นสีดำ หากคุณมีเรื่องยุ่งๆ ในหัวตอนนี้ อย่าเพิ่งตกใจ เพราะเรื่องจะชัดเจนขึ้นในภายหลัง
    ในการกำหนดวาล์วปิด (แนวตั้ง) ให้เลือกตัวอักษร "X" (ละติน อักษรตัวใหญ่“X”) และสำหรับแนวนอนแบบเปิด ให้ใช้ตัวอักษร “Y” (อักษรละตินตัวพิมพ์ใหญ่ “Y”) จดหมายเหล่านี้ถูกเลือกด้วยเหตุผลหลายประการ ประการแรกพวกเขารู้จักกันจาก หลักสูตรของโรงเรียนและทางหู ประการที่สองและที่สำคัญกว่านั้นก็คือ ตาราง ASCIIอักขระอยู่ในแถว (ตำแหน่ง 88d และ 89d ตามลำดับ) ซึ่งช่วยให้การแทนที่ง่ายขึ้น และเลือกภาษาละตินเพื่อให้สามารถสร้างเมนูเป็นภาษารัสเซียได้โดยไม่ต้องอัปโหลดแบบอักษรซ้ำ
    ดังนั้นเราจึงตัดสินใจเลือกสัญลักษณ์แล้ว ตอนนี้เรามาดูเสื้อผ้าหรือที่เรียกว่าแบบอักษรกันดีกว่า เราเอากระดาษแผ่นหนึ่งไว้ในกรงแล้วสร้างฟิลด์ขนาด 8x16 ลงไปแล้วเริ่มวาดสัญลักษณ์สำหรับวาล์วแนวนอนและแนวตั้ง เนื่องจากประตูจะต้องเหมือนกันทั้งในแนวตั้งและแนวนอน เราจะใช้เพียง 8 บรรทัดแรกเพื่อให้ได้รูปสี่เหลี่ยมจัตุรัส จากนั้นเราก็วาดวาล์วสองตัวในฟิลด์นี้ทั้งในแนวตั้งและแนวนอน มันควรจะได้ผลแบบนี้


    ฟอนต์สองวาล์ว

    ต่อไปเราจะแสดงสี่เหลี่ยมสีดำทีละอัน ศูนย์สีขาว- และเราสร้าง 8 ไบต์ จากนั้นเราจะแปลงเป็นรูปแบบทศนิยมและสร้างอาร์เรย์ ขั้นแรกให้อักขระ 8 ไบต์จากนั้นเป็นศูนย์ 8 ไบต์ (เราปล่อยให้ชั้นใต้ดินว่างเปล่า) ทำซ้ำขั้นตอนนี้สำหรับอักขระตัวที่สอง


    ตารางรหัสไบนารี่และแปลงเป็นรูปแบบทศนิยม

    เป็นผลให้เราได้รับส่วนหัวของขั้นตอนต่อไปนี้:

    ขั้นตอน WRIFT; (Zagruzka shrifta ("pesochnye chasy")) แบบอักษร Const:อาร์เรย์ของไบต์=(129,195,231,153,153,231,195,129,0,0,0,0,0,0,0,0, 255,102,36,24,24,36,102,255,0,0, 0,0,0,0,0,0); ตัวแปร SegScr:Word;

    OfsScr:Word; screen1:อาร์เรย์ของแบบอักษรแบบไบต์สัมบูรณ์; Font คืออาร์เรย์ของอักขระ Gate สองตัว (อักขระแต่ละตัวอยู่ในบรรทัดของตัวเอง) ตัวแปรที่น่าสนใจที่สุดคืออาร์เรย์ screen1 ซึ่งเป็นอาร์เรย์ที่อยู่ในที่อยู่ที่แน่นอนของตัวแปร Font (directive

    แน่นอน

    - ถัดมาเป็นส่วนที่สนุก

    ด้วยวิธีง่ายๆ นี้ คุณสามารถเปลี่ยนแบบอักษรทั้งหมดใน DOS ให้เป็นของคุณเองได้ หากต้องการยกเลิกการโหลดแบบอักษร ให้ใช้ขั้นตอนการคืนค่า:

    ขั้นตอนการคืนค่า; (Sbros shrifta) เริ่มต้น asm mov ขวาน,3 int 10h สิ้นสุด; สิ้นสุด;(เรียกคืน)

    ซึ่งจะดำเนินการเมื่อมีการแสดงเมนูและออกจากโปรแกรม

    อย่างไรก็ตามสำหรับการอ้างอิงสิ่งที่เรียกว่า "Russifiers" ก็ทำงานใน DOS ในลักษณะเดียวกัน พวกเขาเพียงแค่แทนที่แบบอักษรปัจจุบันด้วยแบบอักษรที่มีตัวอักษรรัสเซีย

    หนึ่งในเรื่องตลก

    เพื่อนคนหนึ่งของฉัน โดยเฉพาะตอนที่ฉันเรียนการเขียนโปรแกรมด้วย Borland C++ ได้สร้างฟอนต์ในรูปแบบ MPH โดยใช้ตัวอย่างจาก "The Matrix" ด้วย เหล่านั้น. ฉันเพียงแค่แทนที่อักขระทั้งหมดด้วยอักขระ MPH หนึ่งตัว Norton Commander ดูน่ากลัว! เสียดายที่ไม่มีรูปถ่ายจากครั้งนั้นเหลืออยู่เลย
    ถ้าลิงค์โปรแกรมดังกล่าวสามารถเปิดได้ในสาขาวิทยาการคอมพิวเตอร์ ครูคงจะดีใจมาก

    การปรับเปลี่ยนในวันนี้

    อันที่จริงฉันไม่ได้ให้เกมในรูปแบบที่เขียนเมื่อหลายปีก่อน มันเผยให้เห็นข้อบกพร่องที่ไม่พึงประสงค์บางอย่าง:
    1. โปรแกรมหยุดทำงานหากตรวจไม่พบไฟล์ GAME.SAV
    2. เครื่องกำเนิดไฟฟ้า ตัวเลขสุ่มไม่ได้เริ่มต้น ดังนั้นมันจึงสร้างระดับเดียวกันอย่างต่อเนื่อง
    นอกจากนี้ เนื่องจากปัญหาในการเข้ารหัส ฉันจึงสร้างเกมเวอร์ชันที่สองขึ้นมาทั้งหมด ภาษาอังกฤษ- และถ้าคุณอ่าน ซอร์สโค้ดไม่ได้อยู่ในโปรแกรมแก้ไขที่เข้ากันได้กับ DOS ฉันขอแนะนำให้ใช้แหล่งที่มา - จะไม่มีปัญหาในการเข้ารหัส

    เป็นเรื่องน่ายินดีมากที่ DOSbox มีอยู่ทุกหนทุกแห่ง ฉันแก้ไขโปรแกรมส่วนใหญ่บน iPad ในสถานีรถไฟใต้ดินเป็นการส่วนตัว คุณนึกภาพออกไหมว่า Pepper ดูตลกขนาดไหนเมื่อเปิด iPad และ Borland Pascal ขึ้นมา?


    Borland Pascal ตัวเก่าดีๆ บน iPad

    วงกบจึงได้รับการแก้ไขทันที

    ภาพหน้าจอของโปรแกรมหลายภาพพร้อมคำอธิบายสั้น ๆ

    สำหรับผู้ที่ไม่มีโอกาสหรือต้องการเล่นเกม นี่คือภาพหน้าจอหลักบางส่วนของเกม
    หลังจากเปิดตัว สนามแข่งขันจะเปิดขึ้นพร้อมกับเกมที่บันทึกไว้ล่าสุด


    เริ่ม

    เคอร์เซอร์ถูกไฮไลท์และกะพริบ

    หากคุณกด F1 คุณจะได้รับความช่วยเหลือง่ายๆ นี้




    ช่วย

    หากต้องการสร้างระดับ ให้กด F4 และเข้าสู่เมนูนี้


    เมนูการสร้างระดับ

    หลังจากชัยชนะเกมจะแสดงความยินดีกับคุณ


    ขอแสดงความยินดีกับชัยชนะของคุณ

    และมันจะรอให้กดปุ่มใด ๆ ในกรณีนี้ ความคืบหน้าของเกมจะไม่ถูกบันทึก

    วิธีการติดตั้งและเล่น

    เนื่องจากลักษณะเฉพาะและการประยุกต์ใช้การโหลดแบบอักษร ของเล่นจึงใช้งานได้เฉพาะใน DOS แบบ Pure Tube เท่านั้น ดังนั้นเพื่อให้ใช้งานได้คุณต้องใช้ dosbox หรือโปรแกรมที่คล้ายกัน
    การติดตั้งเป็นเรื่องเล็กน้อย ดาวน์โหลดไฟล์เก็บถาวรด้วยโปรแกรม ติดตั้ง ดอสบ็อกซ์- และหากต้องการ คุณสามารถ Russify ได้ วิธีการสำหรับ Linux อยู่ที่นี่: old-game.org/?p=1717
    โดยหลักการแล้ว ไฟล์ทั้งหมดนี้สามารถใช้กับ Windows ได้: ในการดำเนินการนี้ ไฟล์ Russian.txt จะถูกวางไว้ในโฟลเดอร์ที่มีโปรแกรมและการกำหนดค่า และทางลัดสำหรับ Dosbox ได้รับการแก้ไข เส้นทางทางลัดควรมีลักษณะดังนี้: “ “C:\Program Files\DOSBox-0.74\DOSBox.exe” -userconf”เราลบ “-userconf”และการกำหนดค่าของคุณจะใช้งานได้

    ใน Ubuntu ฉันแค่คลิก คลิกขวาเลื่อนเมาส์ไปเหนือโปรแกรมแล้วเลือกรันใน dosbox ใน Windows ไม่รู้ต้องทำอย่างไร เพราะไม่มีเครื่องไหนเลย ก็เข้า. เป็นทางเลือกสุดท้ายเส้นทางสู่เกมถูกติดตั้ง คำสั่งเมานต์เส้นทาง.
    คุณมีทางเลือกระหว่างเวอร์ชันภาษารัสเซียและภาษาอังกฤษ คุณไม่จำเป็นต้องเล่นกับ Russification และริดสีดวงทวารด้วยการกำหนดค่า แต่เพียงแค่ยิงไปที่ภาษาอังกฤษ ไม่มีความแตกต่างระหว่างพวกเขาเลย แม้ว่าโดยส่วนตัวแล้วในฐานะนักเขียน แต่ฉันชอบเวอร์ชั่นรัสเซียมากกว่า
    การควบคุมทำได้โดยใช้ลูกศรบนแป้นพิมพ์ การเลือกและการกลับรายการด้วยปุ่มแทรกหรือ ดับเบิลคลิกบนพื้นที่ (ใช่ มีวงกบอยู่ที่นี่) หากตำแหน่งค้างอยู่ ให้กด Space bar หนึ่งครั้ง

    โปรดจำไว้ว่าเกมที่บันทึกไว้ล่าสุดจะถูกโหลดในแต่ละครั้ง หากต้องการสร้างใหม่ ให้กด F4 ฉันแนะนำให้เริ่มต้นด้วยสนาม 4x4 ตอนนี้ฉันกำลังเล่น 8x8 และฉันยังกลัวที่จะเปลี่ยนไปใช้ 16x16 เพราะฉันขับ 4x4 เสร็จในเวลาไม่ถึงหนึ่งนาที 8x8 นาทีใน 7-10 และฉันกลัวที่จะจินตนาการถึง 16x16 ด้วยซ้ำ
    โปรดจำไว้ว่าช่องโหลดที่มีคำว่า HABR และชื่อเล่นของฉัน (รูปภาพในรายการบทความ) จะหายไปหลังจากบันทึกหรือออกอย่างถูกกฎหมาย มันถูกเก็บไว้ในไฟล์ GAME.SAV- หากคุณต้องการกู้คืน ให้แทนที่ไฟล์นี้ด้วยไฟล์จากไฟล์เก็บถาวร

    สนามเฉพาะสำหรับ habr

    ฉันไม่ต้องการเพียงแค่เปิดตัวเกม แม้ว่าฮับจะเสร็จสิ้นแล้วก็ตาม ฉันต้องการเคล็ดลับบางอย่าง และฉันตัดสินใจจารึกในช่องขนาด 16x16 ที่ใหญ่ที่สุด
    รูปแบบไฟล์บันทึกนั้นเรียบง่าย: อันดับแรกคือขนาดฟิลด์ เช่น หมายเลข 16 การขึ้นบรรทัดใหม่ จากนั้นจึงเป็น 256 (สำหรับฟิลด์ 16x16) อักขระ X และ Y ที่ประกอบขึ้นเป็นรูปแบบฟิลด์ และต่อท้ายด้วยจำนวน Y ใน สนาม (เช็คซัมชนิดหนึ่ง)
    เมื่อต้องการทำสิ่งนี้ ฉันได้สร้างฟิลด์ดังกล่าวใน OF Calc และทำคำจารึกในเซลล์ด้วยสี จากนั้นเขาก็ใส่ตัวอักษร X และ Y ลงไปตามลำดับ

    การเตรียมตัวลงสนาม.

    จากนั้นฉันก็บันทึกเป็น CSV นำตัวคั่นทั้งหมดออก ฉันคำนวณจำนวน Y (ง่ายมาก คุณค้นหาใน OF Writer แทนที่ด้วยและแทนที่ Y ด้วยบางอย่าง มันจะบอกจำนวนการแทนที่ - นั่นคือหมายเลขที่คุณกำลังมองหา) ก่อนอื่นฉันใส่หมายเลข 16 รถม้ากลับ และท้ายจำนวนผู้เล่น คุณสามารถตัดสินผลลัพธ์ได้ด้วยตัวเอง :)

    ข้อเสียของโปรแกรมเวอร์ชันปัจจุบัน

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

    ดังนั้น:
    1. ข้อเสียเปรียบประการแรกและไม่พึงประสงค์ที่สุดคือการควบคุมที่ไม่ดี ขั้นแรก การผกผันทำได้โดยใช้ปุ่ม Insert หรือสเปซบาร์คู่ ยิ่งไปกว่านั้น หากคุณกดสเปซบาร์เป็นจำนวนคี่ โปรแกรมจะ "ค้าง" จนกว่าคุณจะกดเป็นเลขคู่ มันน่ารำคาญ.
    2. ประการที่สอง ข้อเสียเปรียบที่สำคัญ- นี่เป็นการเรนเดอร์ทั้งเกมโดยใช้ฟังก์ชัน write/writeln ในแต่ละเหตุการณ์ หน้าจอจะถูกวาดใหม่ เมื่อเล่นบนสนามขนาด 16x16 การชะลอตัวและการเรนเดอร์จะสังเกตเห็นได้ชัดเจนอยู่แล้ว นอกจากนี้ วิธีการนี้ยังทำให้ตรรกะของโปรแกรมซับซ้อนขึ้น และตอนนี้การแก้ไขก็กลายเป็นปัญหาใหญ่
    จำเป็นต้องใช้การเรนเดอร์โดยใช้ฟังก์ชัน goto(x;y) แล้วมันก็จะเปลี่ยนแปลงได้ ตัวละครที่แยกจากกันโดยไม่ต้องวาดใหม่ทั้งหน้าจอ
    3. เกมเพียงแค่ขอการสนับสนุนเมาส์ ขอย้ำอีกครั้งว่าการรองรับเมาส์จำเป็นต้องดำเนินการร่วมกับขั้นตอนที่ 2 เพื่อให้คุณสามารถ "จับ" พิกัดได้อย่างแม่นยำ
    4. จุดบกพร่องเล็กๆ น้อยๆ ที่ตามมาจากจุดที่ 2 - เมื่อคุณลงไปที่มุมขวาล่าง สัญลักษณ์หนึ่งตัวจะหมดกรอบ ฉันพยายามแก้ไข และพบว่าการเขียนตำแหน่งการเรนเดอร์นี้ใหม่ทั้งหมดนั้นง่ายกว่าการหาวิธีทำงาน

    คุณอยากจะทำอะไร

    แน่นอนฉันต้องการแอปพลิเคชันดังกล่าวสำหรับ Android หรือ iPad เพื่อให้คุณสามารถเล่นได้โดยใช้นิ้วของคุณ หรือถ้าไม่ใช่แอปพลิเคชันก็เป็นของเล่นที่ใช้เบราว์เซอร์ (แต่ใช้งานได้กับ Android และ iOS) ที่จะอยู่ที่นั่น เมนูสวยๆและ การนำทางที่สะดวก- มีตารางบันทึกอยู่ มีเครื่องนับเวลาที่คุณสามารถอวดกับเพื่อนของคุณได้ นอกจากนี้ยังมีสถิติเพื่อให้คุณสามารถประมาณเวลาเฉลี่ยและความเร็วของทักษะได้
    โดยทั่วไปแล้วการบินครั้งใหญ่เพื่อความคิดสร้างสรรค์ด้วย การขาดงานโดยสมบูรณ์เวลาว่างเพื่อศึกษาการเขียนโปรแกรมสำหรับอุปกรณ์เหล่านี้ ในทางกลับกัน dosbox มีอยู่ทุกหนทุกแห่งและอาจเป็นเรื่องยากที่จะบรรลุความสามารถในการพกพาที่เป็นสากลมากขึ้นและอาจจะสมเหตุสมผลที่จะทำโปรแกรมนี้ให้เสร็จ? คุณคิดอย่างไร?

    ผลลัพธ์...

    จุดประสงค์ของบทความนี้ไม่ใช่เพื่อแสดงให้เห็นว่าฉันเก่งแค่ไหน แต่เพียงเพื่อจดจำว่ามันเป็นอย่างไร แน่นอนว่าพวกเราเกือบทุกคนเขียนอะไรแบบนี้ในวัยเด็ก นี่ไม่ใช่โอ้อะไร โปรแกรมที่ซับซ้อนและเด็กนักเรียนทุกคนก็สามารถเขียนได้ด้วยความเพียรพยายามเพียงพอ เป็นกระทู้รำลึกความหลังมากกว่า
    ฉันเคยใช้แอสเซมเบลอร์บ่อยครั้งในโปรแกรม ฉันชอบที่จะ “พูดคุย” กับฮาร์ดแวร์โดยตรงโดยไม่ต้องมีคนกลาง ฉันรู้สึกว่ารถดีขึ้น และถึงอย่างนั้นสำหรับ AVR ฉันเขียนในแอสเซมเบลอร์โดยเฉพาะ และตอนนี้ฉันไม่เข้าใจว่าคอมพิวเตอร์ทำงานอย่างไร แน่นอน ฉันจินตนาการถึงบล็อกพื้นฐาน ฯลฯ แต่ฉันไม่รู้ภาพที่มีรายละเอียด และที่ตลกก็คือไม่มีใครรู้!
    และตอนนี้... ภาษาที่สูงส่ง ระดับสูงโดยทั่วไปแล้ว abstractions จะบังคับให้เราไม่คิดถึงวิธีการและสถานที่ที่โค้ดถูกดำเนินการ สิ่งนี้เป็นสิ่งที่ดีอย่างไม่ต้องสงสัย เพราะมันช่วยให้คุณมีสมาธิกับงานได้โดยตรง แต่ในทางกลับกัน เสน่ห์ของการทำงานกับฮาร์ดแวร์ที่เหมือนโคมไฟอันอบอุ่นจะหายไป...

    รายการอ้างอิงและลิงค์:
    1. คำอธิบายวิธีดาวน์โหลดแบบอักษรสำหรับ DOS shackmaster.narod.ru/fonts.htm
    2. หนังสืออ้างอิงที่ยอดเยี่ยมเกี่ยวกับแอสเซมเบลอร์ ซึ่งทำให้ฉันเข้าใจวิธีการทำงานด้วย ฟังก์ชั่นไบออสและโดยทั่วไปกับฮาร์ดแวร์คอมพิวเตอร์: “การเขียนโปรแกรมใน ระดับฮาร์ดแวร์: หนังสืออ้างอิงพิเศษ” คูลาคอฟ
    3. โปรแกรมจำลอง ดอสบ็อกซ์ www.dosbox.com/download.php?main=1
    4. โปรแกรมและแหล่งที่มา narod.ru/disk/65499856001.6f143511c7c3c2ad7866f07008d8db29/INVERTOR.zip.html
    5. แหล่งที่มาของโปรแกรม "Matrix" narod.ru/disk/65499898001.a6c953f20e2ee023bd00e3518e22fea8/Matrix.pas.html

    ป.ล. วุ้ย ฉันอาจใช้เวลาสองสามวันในการจดจำและค้นหาว่าฉันสร้างแบบอักษรนี้ได้อย่างไร มีรหัสมันใช้งานได้ แต่ฉันจำไม่ได้และไม่เข้าใจวิธีการ
    พี.พี.เอส. หากผู้คนสนใจ ฉันจะเพิ่มวิดีโอว่าฉันสร้างสนาม 4x4 ให้เสร็จภายในเวลาไม่ถึงนาทีได้อย่างไร (โดยใช้ตู้เย็น Pilot Brothers เป็นตัวอย่าง)
    พี.พี.พี.เอส. ฉันขอขอบคุณความคิดเห็นเกี่ยวกับการสะกดและเครื่องหมายวรรคตอนที่ส่งถึง ข้อความส่วนตัว!

    เฉพาะผู้ใช้ที่ลงทะเบียนเท่านั้นที่สามารถเข้าร่วมการสำรวจได้ กรุณาเข้าสู่ระบบ

    โปรแกรมเมอร์มือใหม่ไม่ควรเริ่มเขียนโปรแกรมที่ซับซ้อนหลายระดับใน Pascal ทันที โปรแกรมเกม- คุณควรเริ่มต้นด้วยเกมลอจิกหรือคณิตศาสตร์ที่มีส่วนต่อประสานข้อความ เมื่อได้รับประสบการณ์อย่างค่อยเป็นค่อยไป คุณสามารถทำงานต่อไปได้มากขึ้น โครงการขนาดใหญ่.

    คำแนะนำ

  • เริ่มทำงานกับโปรแกรมด้วยชื่อและรายการปลั๊กอินที่ใช้: โปรแกรม reshipprimer ใช้ crt;
  • บอกคอมไพเลอร์ว่าตัวแปรใดที่จะรวมอยู่ในโปรแกรม:vara,b,c:integer;d:string;โดยที่ a และ b คือพจน์, c คือผลรวม, d คือคำตอบสำหรับคำถามที่ว่าผู้ใช้ต้องการดำเนินการต่อหรือไม่ กำลังเล่น
  • ทำเครื่องหมายจุดเริ่มต้นของโปรแกรมและ วนซ้ำไม่รู้จบและยังเริ่มต้นตัวสร้างตัวเลขสุ่ม:beginrandomize;ในขณะที่ 0=0 dobegin
  • ตั้งโปรแกรมการสร้างตัวเลขสุ่มสองตัวในช่วงตั้งแต่ 0 ถึง 1000:a:=round(random(1000));b:=round(random(1000));
  • แสดงตัวอย่างที่เขาต้องแก้ให้ผู้ใช้เห็น แล้วถามผลลัพธ์: writeln("How many will it be"),a,("+"),b,("?");readln(c);
  • บอกผู้ใช้ว่าเขาแก้ไขตัวอย่างได้อย่างถูกต้องหรือไม่: ถ้า a+b=c แล้ว writeln("Correct!") else writeln("Wrong!);
  • ถามผู้ใช้ว่าเขาต้องการเล่นมากกว่านี้หรือไม่: writeln("เราจะเล่นต่อไปไหม?"); readln(d);
  • หากคำตอบเป็นลบ ให้ยุติโปรแกรม: ถ้า upcase(d)"Y" ให้หยุด (0);
  • สิ้นสุดการวนซ้ำก่อน จากนั้นจึงปิดโปรแกรมเอง: สิ้นสุด ให้ความสนใจกับช่วงเวลาหลังคำสั่งสิ้นสุดที่สอง
  • เปิดโปรแกรมโดยกด Ctrl + F9 ตัวอย่างแรกจะแสดงบนหน้าจอ คิดเลขในใจแล้วใส่คำตอบ เครื่องจะแจ้งให้คุณทราบทันทีว่าแก้ไขได้ถูกต้องหรือไม่ จากนั้นระบบจะถามว่าคุณต้องการเล่นต่อหรือไม่ การตอบ Y หรือ y จะส่งผลให้ตัวอย่างต่อไปนี้ปรากฏขึ้น และการป้อนตัวอักษรอื่นใดจะเป็นการยุติโปรแกรม
  • ประสบความสำเร็จแล้ว การดำเนินงานที่เหมาะสมเกมเริ่มปรับปรุงมัน ตัวอย่างเช่น เพิ่มหน้าจอที่ชัดเจนก่อนที่แต่ละตัวอย่างใหม่จะแสดงด้วยคำสั่ง cls ใช้ขั้นตอนสีข้อความ ทำให้ข้อความปรากฏเป็นสีต่างๆ ลองนึกถึงวิธีที่คุณสามารถบังคับให้โปรแกรมเปลี่ยนความซับซ้อนของตัวอย่างโดยอัตโนมัติ: หากคำตอบถูกต้อง ให้ทำให้ซับซ้อน และหากไม่ถูกต้อง ให้ทำให้ง่ายขึ้น เพื่อกระจายเกม ให้เพิ่มฟังก์ชันสำหรับสร้างตัวอย่างสำหรับการดำเนินการทางคณิตศาสตร์ต่างๆ
  • ข้อความ (เกม Mine Mines) ใช้ GraphABC, ABCObjects, ABCButtons; ค่าคงที่ N = 10; //ฟิลด์ N x N sz = 40; //ขนาดเซลล์ d0 = 10; //เยื้องจากขอบด้านซ้ายและด้านบน zz = 2; //ระยะห่างระหว่างเซลล์ NMines = 10; //จำนวนเหมือง ประเภท OneSellField = บันทึกของฉัน: บูลีน; //มีเหมืองอยู่หรือไม่ ชั้น: บูลีน; //มีช่องทำเครื่องหมายเพื่อนบ้าน: จำนวนเต็ม; // บวก - มีเพื่อนบ้านกี่คน; neg - จำเป็นสำหรับอัลกอริทึมการติดตาม - เปิดเซลล์ว่าง คลิก: บูลีน; //มันเป็นปลายเปิดเหรอ; อยู่ที่ BtNewGame: ButtonABC;<= N) and (jj >ขาย: อาร์เรย์ของ SquareABC;<= N)) then begin c:= c + Integer(Field.mine); end; end; end; Field.neighbours:= c; end; Opened:= 0; //Кол. открытых мин Nfl:= 0; //Кол. установленных флажков end; Procedure OpenZero(fx, fy: integer); var fl:boolean; step, ii, jj: integer; begin Field.neighbours:= -1; step:= -1; repeat fl:= true; for var x:= 1 to N do begin for var y:= 1 to N do begin if Field.neighbours < 0 then begin {*** Проверка соседних клеток ***} for var dx:= -1 to 1 do begin for var dy:= -1 to 1 do if not ((dx = 0) and (dy = 0)) then begin //Центральную клетку не считаем ii:= x + dx; jj:= y + dy; //Если не выходит за границы поля if ((ii >ฟิลด์: อาร์เรย์ของ OneSellField;<= N) and (jj >ขาย: อาร์เรย์ของ SquareABC;<= N)) then begin if Field.neighbours = 0 then begin Sleep(30); //Для анимации открывания клеток Sell.Color:= clLightYellow; Field.click:= true; Field.neighbours:= step; fl:= false; //Была открыта клетка - ищем др. end; if Field.neighbours >0 จากนั้นเริ่ม Sell.Color:= clLightGreen; ขาย.ข้อความ:= IntToStr(Field.neighbours);", clSkyBlue); btNewGame.OnClick:= NewGame; NewGame; OnMouseDown:= MouseDown; OnMouseMove:= MouseMove; END