我需要写一个包含awt panel
的战略游戏。
场景: -
首先,我需要从txt
文件(我的地图)中读取并根据txt
文件绘制我的图像。 (我在下面的代码中做到了。)
public class temp extends JApplet implements Runnable,MouseListener {
public void init() {
setSize(1400,800 );
setBackground(Color.BLACK);
}
@Override
public void start() {
tilemap = new int[60][75];
filereader();
Thread thread = new Thread(this);
thread.start();
}
@Override
public void paint(Graphics g) {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
int mod_i = 100*i;
int mod_j = 50*j;
g.setColor(Color.red);
String str = String.valueOf(tilemap[i][j]);
g.drawString(str,mod_i,mod_j);
switch (tilemap[i][j]) {
case 1:
g.drawImage(asfalt,mod_i,mod_j,this);
break;
case 2://it means everywhere u read 2, so draw a tree
g.drawImage(tree,mod_i,mod_j,this);
break;
}
}
}
其次,我必须将我的窗口划分为3个部分! (一个最重要的部分,主要背景,和两个小部分(一个用于显示我在大地图中的位置和一个用于显示信息的迷你地图))
问题: - 我怎么能分开呢?我应该使用面板还是边框? 我也必须使用容器,因为我的地图太大而且我必须滚动它。
对此方案有何建议?感谢
答案 0 :(得分:0)
在一个班级中编写所有内容可能不是最好的主意。你绝对应该将你的Filereader存储在另一个类中。
顺便说一句,不要混合awt和Swing。使用JApplet和JPanel或Applet和Panel。
为什么要使用边框?您可以另外使用Borders,但这与您的结构无关。
创建一个新的JPanel,你可以在其中执行所有“主要背景”-paintig的内容。调用JApplet的setContentPane来添加此JPanel。
例如对此JPanel使用BorderLayout。为地图和信息再创建2个JPanel,只需将这些JPanel添加到主JPanel中。
如果您需要JPanel的透明背景,请使用setOpaque - JPanel方法。
如果您的地图(或您的迷你地图)是静态的,那么将您的图像一次绘制到BufferedImage并绘制BufferedImage可能是个好主意。