java游戏开发之有限状态机
游戏里怎么实现这些不同操作显示出不同效果的呢?通过程序里设定不同的状态,当前是什么状态,就执行什么逻辑。其实这个就叫做:有限状态机!下面和小编一起了解一下吧。
在不同的阶段,游戏所运行的逻辑、所显示的界面,都是不同的。
以五子棋举例,游戏开始、游戏中、胜负已分,对应的界面和逻辑都不同。
在游戏中,又分为:自己下棋、对方下棋、游戏暂停、悔棋等多个状态。
再比如RPG游戏的人物,站立、行走、奔跑、攻击、死亡都是不同的动画,
发出一颗子弹,从出现,到往前运动、打到目标,或飞出屏幕,都是不同逻辑。
怎么实现这些效果呢?
程序里设定不同的状态,当前是什么状态,就执行什么逻辑。
这个就叫做:有限状态机!
是不是很简单,不要小瞧它,复杂的游戏功能都是靠它实现的。相关教程:Java视频教程
接下来我们用代码来实现一个简单的效果。
还以小方块为例,让它在屏幕上,以规定方式运动。
package game6; import java.awt.Color; import java.awt.Graphics; import javax.swing.JPanel; /** * java游戏开发杂谈 * ---demo6:有限状态机 * * @author 台哥编程课堂 * https://www.cnblogs.com/chaohi/ * * @date 2019-04-25 */ public class GamePanel extends JPanel{ /** 屏幕的宽和高 */ private int width,height; public GamePanel(int width, int height) { this.width = width; this.height = height; this.setSize(width, height); //设置当前画布可以获得焦点。 this.setFocusable(true); } /**方块的位置*/ private int fk_x = 60; private int fk_y = 60; /** * 画布的绘制 */ public void paintComponent(Graphics g) { super.paintComponent(g); //画绿色背景 g.setColor(new Color(0x9391d6)); g.fillRect(0, 0, width, height); //绘制方块,大小为80 g.setColor(Color.red); g.fillRect(fk_x, fk_y, 80, 80); } //四个状态,对应四个方向的运动 private static final int stage_left = 0; private static final int stage_right = 1; private static final int stage_up = 2; private static final int stage_down = 3; //当前状态,初始为向右 private int stage = stage_right; /** * 游戏逻辑,处理方块的运动,每次横纵坐标都移动1个像素 */ public void logic() { switch(stage) { case stage_right: if(fk_x < 260){ fk_x = fk_x + 1; //右移一个像素 }else{ stage = stage_down; //超出指定范围,改为向下状态 } break; case stage_down: if(fk_y < 260){ fk_y = fk_y + 1; }else{ stage = stage_left; } break; case stage_left: if(fk_x > 60){ fk_x = fk_x - 1; }else{ stage = stage_up; } break; case stage_up: if(fk_y > 60){ fk_y = fk_y - 1; }else{ stage = stage_right; } break; } } }
另外两个类GameFrame和GameThread,跟上一篇博客里的一样,这里不贴出来了。
程序运行的效果,就是红色方块从左上角开始,右移、下移、左移、上移,顺时针循环。
代码里我们是定义了四个状态,分别对应四个方向下的运动,
在游戏线程的逻辑方法里,根据当前状态,进行位置属性的更改,线程再调取界面重绘。
用的代码例子,界面都很粗糙,因为目的是介绍知识点,越简化,越容易理解。
Atas ialah kandungan terperinci java游戏开发之有限状态机. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

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

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Panduan untuk Nombor Smith di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor smith di Jawa? contoh dengan pelaksanaan kod.

Dalam artikel ini, kami telah menyimpan Soalan Temuduga Spring Java yang paling banyak ditanya dengan jawapan terperinci mereka. Supaya anda boleh memecahkan temuduga.

Java 8 memperkenalkan API Stream, menyediakan cara yang kuat dan ekspresif untuk memproses koleksi data. Walau bagaimanapun, soalan biasa apabila menggunakan aliran adalah: bagaimana untuk memecahkan atau kembali dari operasi foreach? Gelung tradisional membolehkan gangguan awal atau pulangan, tetapi kaedah Foreach Stream tidak menyokong secara langsung kaedah ini. Artikel ini akan menerangkan sebab -sebab dan meneroka kaedah alternatif untuk melaksanakan penamatan pramatang dalam sistem pemprosesan aliran. Bacaan Lanjut: Penambahbaikan API Java Stream Memahami aliran aliran Kaedah Foreach adalah operasi terminal yang melakukan satu operasi pada setiap elemen dalam aliran. Niat reka bentuknya adalah

Panduan untuk TimeStamp to Date di Java. Di sini kita juga membincangkan pengenalan dan cara menukar cap waktu kepada tarikh dalam java bersama-sama dengan contoh.

Kapsul adalah angka geometri tiga dimensi, terdiri daripada silinder dan hemisfera di kedua-dua hujungnya. Jumlah kapsul boleh dikira dengan menambahkan isipadu silinder dan jumlah hemisfera di kedua -dua hujungnya. Tutorial ini akan membincangkan cara mengira jumlah kapsul yang diberikan dalam Java menggunakan kaedah yang berbeza. Formula volum kapsul Formula untuk jumlah kapsul adalah seperti berikut: Kelantangan kapsul = isipadu isipadu silinder Dua jumlah hemisfera dalam, R: Radius hemisfera. H: Ketinggian silinder (tidak termasuk hemisfera). Contoh 1 masukkan Jejari = 5 unit Ketinggian = 10 unit Output Jilid = 1570.8 Unit padu menjelaskan Kirakan kelantangan menggunakan formula: Kelantangan = π × r2 × h (4

PHP dan Python masing -masing mempunyai kelebihan sendiri, dan pilihannya harus berdasarkan keperluan projek. 1.Php sesuai untuk pembangunan web, dengan sintaks mudah dan kecekapan pelaksanaan yang tinggi. 2. Python sesuai untuk sains data dan pembelajaran mesin, dengan sintaks ringkas dan perpustakaan yang kaya.

PHP adalah bahasa skrip yang digunakan secara meluas di sisi pelayan, terutamanya sesuai untuk pembangunan web. 1.PHP boleh membenamkan HTML, memproses permintaan dan respons HTTP, dan menyokong pelbagai pangkalan data. 2.PHP digunakan untuk menjana kandungan web dinamik, data borang proses, pangkalan data akses, dan lain -lain, dengan sokongan komuniti yang kuat dan sumber sumber terbuka. 3. PHP adalah bahasa yang ditafsirkan, dan proses pelaksanaan termasuk analisis leksikal, analisis tatabahasa, penyusunan dan pelaksanaan. 4.Php boleh digabungkan dengan MySQL untuk aplikasi lanjutan seperti sistem pendaftaran pengguna. 5. Apabila debugging php, anda boleh menggunakan fungsi seperti error_reporting () dan var_dump (). 6. Mengoptimumkan kod PHP untuk menggunakan mekanisme caching, mengoptimumkan pertanyaan pangkalan data dan menggunakan fungsi terbina dalam. 7

Java ialah bahasa pengaturcaraan popular yang boleh dipelajari oleh pembangun pemula dan berpengalaman. Tutorial ini bermula dengan konsep asas dan diteruskan melalui topik lanjutan. Selepas memasang Kit Pembangunan Java, anda boleh berlatih pengaturcaraan dengan mencipta program "Hello, World!" Selepas anda memahami kod, gunakan gesaan arahan untuk menyusun dan menjalankan program, dan "Hello, World!" Pembelajaran Java memulakan perjalanan pengaturcaraan anda, dan apabila penguasaan anda semakin mendalam, anda boleh mencipta aplikasi yang lebih kompleks.
