ทุกวันนี้ เกมง่ายๆ ที่ไม่มีกราฟิกหรือ เอฟเฟกต์เสียงกำลังประสบกับการเกิดใหม่ เมื่อเล่น ผู้ใช้จะเน้นที่โครงเรื่อง ไม่ใช่เทคนิคทางศิลปะ ภาษาปาสคาลเหมาะอย่างยิ่งสำหรับการสร้างเกมดังกล่าว
คำแนะนำ
zagadka,mnenie,popytki:จำนวนเต็ม;
zagadka:=int(rnd*100);
popytki:=popytki+1;
writeln("หมายเลขความพยายาม ",popytki,"");
write("คุณคิดว่าเลขอะไรถูกซ่อนอยู่?");
ถ้า zagadka>mnenie แล้ว writeln("ไม่ ตัวเลขที่ซ่อนอยู่นั้นมากกว่า!")
else writeln("ไม่ จำนวนที่ซ่อนอยู่น้อยกว่า!")
ปุ่ม:=ปุ่มอ่าน
โพสต์แห่งความคิดถึงของเล่นที่เราเขียนเพื่อตัวเองในวัยเด็ก
ปีนผ่านพื้นที่เปิดโล่ง แอพสโตร์กำลังมองหา ของเล่นอีกชิ้นสำหรับ 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.htm2. หนังสืออ้างอิงที่ยอดเยี่ยมเกี่ยวกับแอสเซมเบลอร์ ซึ่งทำให้ฉันเข้าใจวิธีการทำงานด้วย ฟังก์ชั่นไบออสและโดยทั่วไปกับฮาร์ดแวร์คอมพิวเตอร์: “การเขียนโปรแกรมใน ระดับฮาร์ดแวร์: หนังสืออ้างอิงพิเศษ” คูลาคอฟ
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 ทันที โปรแกรมเกม- คุณควรเริ่มต้นด้วยเกมลอจิกหรือคณิตศาสตร์ที่มีส่วนต่อประสานข้อความ เมื่อได้รับประสบการณ์อย่างค่อยเป็นค่อยไป คุณสามารถทำงานต่อไปได้มากขึ้น โครงการขนาดใหญ่.
คำแนะนำ
ข้อความ (เกม 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