Jadual Kandungan
回复内容:
Rumah pembangunan bahagian belakang Tutorial Python 怎样从零开始用 Python 写一个贪吃蛇?

怎样从零开始用 Python 写一个贪吃蛇?

Jun 06, 2016 pm 04:24 PM
ps

PS: 感觉好像被当成伸手党了 ,题主我一开始也是有个想法的,只是感觉运行效率太渣,来学习学习各位的方法。
还有现在忙着高考,也没多少时间实践这个贪吃蛇程序了。 但还是感谢各位提出的思路。

==--------以下为原问题--------==

首先说明“从零开始”不是指零基础
首先说明“从零开始”不是指零基础
首先说明“从零开始”不是指零基础
是指从头写起。

1. 使用现有模块的话有什么模块推荐?

2. 不使用现有模块的话怎么自己从底层开始写?需要具备哪些知识?

回复内容:

主要分为3个部分:
  • 用一个线程控制游戏的逻辑(如何移动蛇、何时会输等)
  • 用GUI库把当前局面输出到屏幕上
  • 想办法把用户的输入传递到控制线程上

第一部分:贪吃蛇游戏逻辑
首先,如何存储游戏的局面呢?
怎样从零开始用 Python 写一个贪吃蛇?贪吃蛇的整个盘面是一个含有gy*gx个网格棋盘,其中每个网格可能有蛇的身体(图中黄色)食物(图中绿色)啥都没有(图中蓝色)三种状态。用Python描述就是这样:
<span class="n">gx</span><span class="p">,</span> <span class="n">gy</span> <span class="o">=</span> <span class="mi">15</span><span class="p">,</span> <span class="mi">15</span> <span class="c">#棋盘大小</span>
<span class="n">EMPTY</span><span class="p">,</span> <span class="n">SNAKE</span><span class="p">,</span> <span class="n">FRUIT</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span> <span class="c">#网格状态</span>
<span class="n">g</span> <span class="o">=</span> <span class="p">[[</span><span class="n">EMPTY</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">gx</span><span class="p">)]</span> <span class="k">for</span> <span class="n">y</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">gy</span><span class="p">)]</span> <span class="c">#棋盘</span>
Salin selepas log masuk
大概看了下,如果不调用包吧。你至少知道怎么搞gui。python主要的Gui是pyqt,tkinter,GKT,wxpython。 第一、第五个重点参考吧。你同时再知道一个随机数的生成方式。
至于调用包写的话,推荐pygame,random够了。一百行左右的代码量吧。 pygame
100来行就可以了

怎样从零开始用 Python 写一个贪吃蛇?

源码:
codetimer/Snake 贪吃蛇只需要有如下基本的 IO 功能就可以写了:
  1. 在指定坐标写/画一个块
  2. 不阻塞不回显地读键盘

Console 下面能写,GUI 也可以。甚至 Console 需要的功能还少些。


所以最简单就是用标准库 curses 写个 Console 的贪吃蛇。curses 入门可以看官方的 How to:

Curses Programming with Python

如果用 Windows,可能需要下载安装非官方的 curses 包:
lfd.uci.edu/~gohlke/pyt

而如果用 GUI,效果会好些,概念也要多些。我想 pygame 是很应景的东西,用起来比较方便,网站上有教程。

注意 IO 是操作系统提供的功能,由库包装一下系统功能来提供上面两个 IO 操作就已经算是从零开始了。如果你觉得用 curses 还不够“从零开始”,那么你就得针对不同操作系统来写了。例如对于 Windows,就是调用诸如 SetConsoleCursorPosition、WriteConsole 等 API 完成基本的输出,调用 SetConsoleMode、ReadConsole 之类函数处理输入。用 C 写贪吃蛇倒常有人这么干,Python 没见过这样的。 一、前言
看了提问者在另一个回答的评论
怎样从零开始用 Python 写一个贪吃蛇?
真的觉得提问者应该试试pygame。“工欲善其事,必先利其器。”个人认为,python与其他编程语言相比,亮点在于它有丰富的第三方库。比如用python做爬虫,原生库urllib2和第三方库requests相比,哪个效率更高?

二、推荐
pygame顾名思义,python和game相结合,专注于2D游戏开发。
pygame很容易入门。网上有一些不错的教程,在此推荐我的入门教程:
-Daydayblog-第1页

博客提供了16个章节:
怎样从零开始用 Python 写一个贪吃蛇?
没错,博客作者提供了如何使用pygame开发贪吃蛇的教程,作者程序运行界面如下:
怎样从零开始用 Python 写一个贪吃蛇?
三、贪吃蛇

贪吃蛇主要包括以下几个方面:

  • 物体表示:蛇和苹果如何存储和显示、蛇如何移动和吃苹果变长;
  • 字体显示:提示玩家该如何操作,显示玩家的分数;
  • 人机交互:使用键盘的方向键来控制蛇的移动;
  • 矩形绘图:绘制各种基本的图形来组成图像。

使用pygame开发贪吃蛇,您只需要学会:
  • pygame简介及安装
  • surface对象
  • 窗口显示
  • 绘制几何图形
  • event事件
  • 人机交互

蛇可通过python字典存储,
    snake=[{'x': startX , 'y': startY},
           {'x': startX - 1 * cellSize, 'y': startY},
           {'x': startX - 2 * cellSize, 'y': startY},
           {'x': startX - 3 * cellSize, 'y': startY}]
Salin selepas log masuk
不懂python,水一下,做游戏界面为什么用python
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

<🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Sistem Fusion, dijelaskan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1670
14
Tutorial PHP
1276
29
Tutorial C#
1256
24
ps nombor siri cs5 percuma selama-lamanya 2020 ps nombor siri cs5 percuma selama-lamanya 2020 Jul 13, 2023 am 10:06 AM

Nombor bersiri PS cs5 kekal percuma 2020 termasuk: 1. 1330-1384-7388-4265-2355-8589 (Bahasa Cina); -8375-9492-6951 (Bahasa Cina); 4. 1330-1971-2669-5043-0398-7801 (Bahasa Cina), dll

Apa yang perlu dilakukan jika pemasangan ps tidak dapat menulis ralat nilai pendaftaran 160 Apa yang perlu dilakukan jika pemasangan ps tidak dapat menulis ralat nilai pendaftaran 160 Mar 22, 2023 pm 02:33 PM

Penyelesaian kepada ralat 160 apabila pemasangan ps tidak boleh menulis nilai pendaftaran: 1. Semak sama ada terdapat perisian 2345 pada komputer, dan jika ya, nyahpasang perisian 2. Tekan "Win+R" dan masukkan "Regedit" untuk membuka pendaftaran sistem , dan kemudian Cari "Photoshop.exe" dan padam item Photoshop.

Apakah yang perlu saya lakukan jika fon antara muka PS terlalu kecil? Apakah yang perlu saya lakukan jika fon antara muka PS terlalu kecil? Dec 01, 2022 am 11:31 AM

Cara membaiki fon antara muka PS yang terlalu kecil: 1. Buka PS, klik butang "Edit" pada bar menu atas PS untuk mengembangkan menu suntingan 2. Klik butang "Preferences" dalam menu suntingan yang diperluaskan; dan kemudian klik butang "Antaramuka. .." 3. Dalam tetapan antara muka, tetapkan saiz fon antara muka pengguna kepada "Besar", tetapkan penskalaan UI kepada "200%" dan simpan tetapan, kemudian mulakan semula PS untuk berkuat kuasa.

Bagaimana untuk memadam kawasan yang dipilih dalam ps Bagaimana untuk memadam kawasan yang dipilih dalam ps Aug 07, 2023 pm 01:46 PM

Langkah-langkah untuk memadam kawasan yang dipilih dalam PS: 1. Buka gambar yang anda ingin edit 2. Gunakan alat yang sesuai untuk membuat pilihan 3. Anda boleh menggunakan pelbagai kaedah untuk memadam kandungan dalam pemilihan, gunakan "; Padam" kekunci, gunakan "Healing Brush Tool" , gunakan "Content-Aware Fill", gunakan "Stamp Tool", dsb.; 4. Gunakan alatan untuk membaiki sebarang kesan atau kecacatan yang jelas untuk menjadikan gambar kelihatan lebih semula jadi; 5 . Selepas selesai mengedit, klik "Fail" > dalam bar menu "Simpan" untuk menyimpan hasil pengeditan.

Pengenalan kepada proses mengekstrak lukisan garisan dalam PS Pengenalan kepada proses mengekstrak lukisan garisan dalam PS Apr 01, 2024 pm 12:51 PM

1. Buka perisian dan import sekeping bahan, seperti yang ditunjukkan dalam gambar di bawah. 2. Kemudian ctrl+shift+u untuk membuang warna. 3. Kemudian tekan ctrl+J untuk menyalin lapisan. 4. Kemudian terbalikkan ctrl+I, dan kemudian tetapkan mod adunan lapisan kepada Color Dodge. 5. Klik Penapis--Lain-lain--Minimum. 6. Dalam kotak dialog pop timbul, tetapkan jejari kepada 2 dan klik OK. 7. Akhir sekali, anda boleh melihat draf baris diekstrak.

Kekunci pintasan lapisan salinan PS Kekunci pintasan lapisan salinan PS Feb 23, 2024 pm 02:34 PM

Dalam kekunci pintasan lapisan salin PS, kita boleh tahu bahawa jika anda ingin menyalin lapisan apabila menggunakan PS, anda boleh menggunakan kekunci pintasan [Ctrl+J] untuk menyalin pantas. Pengenalan kepada kekunci pintasan untuk menyalin lapisan ini boleh memberitahu anda kaedah operasi khusus Berikut ialah kandungan terperinci, jadi sila lihat. Jawapan kekunci pintasan lapisan salin PS: [Ctrl+J] Kaedah khusus: 1. Buka imej dalam PS dan pilih lapisan yang perlu disalin. 2. Tekan [Ctrl+J] pada papan kekunci pada masa yang sama untuk melengkapkan salinan lapisan. Kaedah penyalinan lain: 1. Selepas membuka imej, tahan lapisan dan gerakkan ikon [Lapisan Baharu] ke bawah. 2. Selepas beralih ke ikon, lepaskan. 3. Salinan lapisan selesai.

Bagaimana untuk mengautomasikan tugas menggunakan PowerShell Bagaimana untuk mengautomasikan tugas menggunakan PowerShell Feb 20, 2024 pm 01:51 PM

Jika anda seorang pentadbir IT atau pakar teknologi, anda mesti sedar tentang kepentingan automasi. Khusus untuk pengguna Windows, Microsoft PowerShell ialah salah satu alat automasi terbaik. Microsoft menawarkan pelbagai alat untuk keperluan automasi anda, tanpa perlu memasang aplikasi pihak ketiga. Panduan ini akan memperincikan cara memanfaatkan PowerShell untuk mengautomasikan tugas. Apakah skrip PowerShell? Jika anda mempunyai pengalaman menggunakan PowerShell, anda mungkin telah menggunakan arahan untuk mengkonfigurasi sistem pengendalian anda. Skrip ialah koleksi arahan ini dalam fail .ps1. Fail .ps1 mengandungi skrip yang dilaksanakan oleh PowerShell, seperti Get-Help asas

Senarai lengkap kekunci pintasan ps Senarai lengkap kekunci pintasan ps Mar 11, 2024 pm 04:31 PM

1. Ctrl + N: Buat dokumen baharu. 2. Ctrl + O: Buka fail. 3. Ctrl + S: Simpan fail semasa. 4. Ctrl + Shift + S: Simpan sebagai. 5. Ctrl + W: Tutup dokumen semasa. 6. Ctrl + Q: Keluar dari Photoshop. 7. Ctrl + Z: Buat asal. 8. Ctrl + Y: Buat semula. 9. Ctrl + X: Potong kandungan yang dipilih. 10. Ctrl + C: Salin kandungan yang dipilih.

See all articles