თამაში არის ხალხისთვის ხელმისაწვდომი გართობის ერთ-ერთი ფორმა. ყველა სახის თამაში ხელმისაწვდომია ონლაინ, მობილურ მოწყობილობებზე, დესკტოპ კომპიუტერებზე და ა.შ. ახლა არ არის დრო, რომ შევქმნათ ერთ-ერთი ასეთი რთული თამაში.
Python-ის გამოყენებით ჩვენ გავაკეთებთ CLI tic-tac-toe თამაშს. მოდით გამოვიყენოთ Python მარტივი Tic Tac Toe თამაშის ასაშენებლად. ის დაგეხმარებათ თამაშის ლოგიკის შექმნაში და კოდის ორგანიზების სწავლაში.
Tic-Tac-Toe
სანამ კოდირებას დავიწყებდით, ვიფიქრე, რომ სწრაფად შევაჯამებდი თამაშს და განვიხილავდი მის განვითარების გეგმას.
პირველ რიგში, ჩვენ დავადგენთ ვარაუდს, რომ X-ები ყოველთვის იღებენ ინიციატივას და პირველ რიგში მოძრაობენ, რაც მომხმარებელს აძლევს მოქმედების შესაძლებლობას.
კონსოლიდან შეიტანება რიცხვი 1-დან 9-მდე. ბადეში, სადაც თითოეული რიცხვი შეესაბამება სხვადასხვა რიცხვს (ზედა მარცხენა არის 1, ქვედა მარჯვნივ არის 9).
კომპიუტერი ავტომატურად განსაზღვრავს და განახორციელებს თავის მოძრაობას მომხმარებლის გადაადგილების შემდეგ. ერთი ძირითადი თამაშის მარყუჟი, რომელიც უწოდებს სხვადასხვა რუტინას, გამოვიყენებ ჩემს მიერ.
რომელი ფუნქცია სრულდება, ალბათ მითითებულია ამ ტექსტზე დაფუძნებული გაკვეთილის თითოეულ სათაურში.
დაფის დიზაინი
ჩვენ გამოვსახავთ ჩვენს დაფას ბადის განლაგების გამოყენებით, როგორც ადრე აღვნიშნე. ამისათვის ჩვენ შევქმნით სიას სახელწოდებით დაფა Python-ში და ის დაიწყება 10 ცარიელი მნიშვნელობით.
იმის გამო, რომ მომხმარებელს შეუძლია შეიყვანოს მხოლოდ რიცხვები 1-დან 9-მდე და არა 0-დან 8-მდე, ჩვენ გვაქვს 10 ცარიელი მნიშვნელობები და არა 9. ასე რომ, იმისათვის, რომ გავამარტივოთ, ჩვენი სიის პირველ ჩანაწერს მივცემთ მნიშვნელობას „ცარიელი ტექსტი“.
ამგვარად, ჩვენ შეგვიძლია გამოვიყენოთ 1–9 ნაცვლად 0–8–ისა, ჩვენს სიაში ჩანაწერების ინდექსირებისთვის.
insertLetter()
Letter და Pos იქნება ორი შემავალი ამ ფუნქციისთვის. ის მხოლოდ მოთხოვნილ წერილს განათავსებს მოთხოვნილ ადგილას.
სივრცე უფასოა (pos)
მარტივად რომ ვთქვათ, ეს მეთოდი გვაცნობს, თუ მითითებული ტერიტორია თავისუფალია. ამიტომ, იქ უკვე არ არის წერილი. Pos, მისი ერთადერთი არგუმენტი, იქნება მთელი რიცხვი 1-დან 9-მდე.
ბეჭდვის დაფა (დაფა)
დაფა იგზავნება როგორც არგუმენტი ამ მეთოდზე, რომელიც აჩვენებს მას კონსოლზე.
არის გამარჯვებული ()
წინამდებარე დაფაზე დაყრდნობით, ეს ფუნქცია გვაცნობს, გაიმარჯვა თუ არა მიწოდებულმა ასომ. მას აქვს ორი პარამეტრი: le და board (ასო).
ეს უნდა იყოს "X" ან "O". უბრალოდ დააკვირდით, არის თუ არა მითითებული ასო დაფაზე თითოეულ პოტენციურ მომგებიან ხაზზე.
მთავარი ()
როცა თამაშის დაწყება გვსურს, ამ მეთოდს დავარქმევთ. ის დაურეკავს ჩვენი პროგრამის მრავალ ფუნქციას და მიუთითებს იმაზე, თუ როგორ უნდა იმუშაოს პროგრამამ.
isBoardFull()
როდესაც შეყვანის სახით მოცემულია ბორტზე, ეს მეთოდი უბრალოდ დააბრუნებს True-ს, თუ დაფა სავსეა, წინააღმდეგ შემთხვევაში კი False.
playerMove()
ამ მეთოდით, ჩვენ მოვითხოვთ მომხმარებლისგან გადაადგილებას და ვადასტურებთ მას. წერილი დაემატება დაფას, თუ გადაადგილება ლეგიტიმურია. თუ არა, ჩვენ განვაგრძობთ მომხმარებლის გამოხმაურების მოთხოვნას.
CompMove() – AI
AI ახლა დაიწყება. კომპიუტერების მოძრაობა გაკონტროლდება ამ ფუნქციით. ის შეაფასებს დაფას და შეარჩევს საუკეთესო ნაბიჯს.
ქვემოთ მოცემულია იმ ალგორითმის ჩამონათვალი, რომელსაც ჩვენ გამოვიყენებთ ამისათვის.
- თუ მიმდინარე ნაბიჯის დასრულება შეუძლებელია, გადადით შემდეგზე.
- გააკეთეთ გამარჯვებული ნაბიჯი, თუ შეგიძლიათ.
- გადადით ამ პოზიციაზე შემდეგ შემობრუნებაზე, თუ მოთამაშეს აქვს პოტენციურად მომგებიანი ნაბიჯი.
- აირჩიეთ კუთხე და გადაატრიალეთ. აირჩიეთ შემთხვევითი, თუ რამდენიმე ვარიანტია.
- მოათავსეთ თავი შუაში.
- განვიხილოთ ერთ-ერთი კიდე. აირჩიეთ შემთხვევითი, თუ რამდენიმე ვარიანტია.
- თუ გადაადგილების საშუალება არ არის, თამაში ფრედ მთავრდება.
აირჩიეთ შემთხვევითი ()
პოტენციური მდებარეობების სიის გათვალისწინებით, ეს ფუნქცია შემთხვევით შეარჩევს მოქმედებას.
თამაშის დაწყება
თამაში ახლა შეიძლება დაიწყოს, როცა დავასრულეთ ყველა დავალება. ყველაფერი რაც უნდა გავაკეთოთ არის მთავარი გამოძახება, თუ მხოლოდ ერთხელ გვინდოდა თამაშის გაშვება.
მაგრამ ჩვენს სიტუაციაში, ჩვენ გვსურს, რომ თამაში გაგრძელდეს მანამ, სანამ მომხმარებელი არ გადაწყვეტს, რომ აღარ სურს თამაში, ამიტომ ჩვენ დავამატებთ მცირე ციკლს მთავარ ხაზს.
სრული კოდი
აქ არის ჩვენი თამაშის მთელი კოდი, რომელიც ახლა დასრულებულია.
გამოყვანის
დასკვნა
ხურეი!
თამაში, რომელიც თქვენ შექმენით მთლიანად ნულიდან. ეს არ არის თამაში, რომელსაც ჩვენ რეგულარულად ვთამაშობთ. მაგრამ ეს ხელს უწყობს ლოგიკის დაწერას და კოდის მკაფიო სტრუქტურის შენარჩუნებას.
ბედნიერი კოდირება!
დატოვე პასუხი