gpt4 book ai didi

java - 使用java的白蚁群模拟器

转载 作者:行者123 更新时间:2023-12-01 17:37:45 28 4
gpt4 key购买 nike

我必须设计一个模拟器来维护一个环境,该环境由排列在任意大小的矩形网格中的补丁集合组成。每个补丁包含零个或多个木片。

一 block 土地可能被一只或多只白蚁或捕食者占据,它们是生活在世界中并按照简单规则行事的移动实体。

白蚁可以从它当前所在的地方捡起木片,或者掉落它携带的木片。白蚁通过从当前斑 block 随机移动到相邻斑 block (沿四个可能方向之一)的方式在网格中移动。新的白蚁可能会从卵中孵化出来,这是通过环境中随机出现的新白蚁来模拟的。

捕食者的移动方式与白蚁类似,如果捕食者移动到一 block 被白蚁占据,然后捕食者吃掉白蚁。

初始化时,白蚁、捕食者和木片随机分布在环境中。然后模拟循环进行,每次迭代都会获得新的环境状态。

我使用 JPanel 设计了竞技场,但我无法在该竞技场中随机放置木材、白蚁和捕食者。谁能帮帮我吗?

我的竞技场代码如下:

01 import java.awt.*;
02 import javax.swing.*;
03
04 public class Arena extends JPanel
05 {
06 private static final int Rows = 8;
07 private static final int Cols = 8;
08 public void paint(Graphics g)
09 {
10 Dimension d = this.getSize();

11 // don't draw both sets of squares, when you can draw one
12
// fill in the entire thing with one color
13
g.setColor(Color.WHITE);
14
// make the background
15
g.fillRect(0,0,d.width,d.height);
16
// draw only black
17
g.setColor(Color.BLACK);
18
// pick a square size based on the smallest dimension
19
int sqsize = ((d.width<d.height) ? d.width/Cols : d.height/Rows);
20
// loop for rows
21
for (int row=0; row<Rows; row++)
22
{
23 int y = row*sqsize; // y stays same for entire row, set here
24 int x = (row%2)*sqsize; // x starts at 0 or one square in

25 for (int i=0; i<Cols/2; i++)

26 {

27 // you will only be drawing half the squares per row

28 // draw square

29 g.fillRect(x,y,sqsize,sqsize);

30 // move two square sizes over

31 x += sqsize*2;

32 }

33 }

34

35 }

36

37
38
39 public void update(Graphics g) { paint(g); }
40
41
42
43 public static void main (String[] args)
44 {
45
46 JFrame frame = new JFrame("Arena");
47 frame.setSize(600,400);
48 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
49 frame.setContentPane(new Arena());
50 frame.setVisible(true);
51 }
52
53 }

最佳答案

一句建议:忘记 UI 和 Swing,直到底层模型完美运行为止。如果您可以使您的模型与纯文本驱动的界面一起工作,那么您一定会拥有良好的 MVC 分离。事实上,您对模型的困难与您的 Java/Swing 问题混在一起。

Java 是一种面向对象的语言:Termite、Predator、Wood、Egg、Board 等类在哪里?将所需的行为封装在对象内不是更好吗?在担心显示问题之前,您是否希望能够模拟规则驱动世界的行为?

你的想法完全错误。

关于java - 使用java的白蚁群模拟器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4664309/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com