gpt4 book ai didi

Java IO,从文件读取并打印到二维字符数组

转载 作者:行者123 更新时间:2023-11-29 06:04:24 25 4
gpt4 key购买 nike

所以我正在为我的游戏设计课布置一项任务,即构建一个 pacman 克隆,这将贯穿整个学期。

目前我有一个吃 bean 迷宫的文本文件

见下文:

WWWWWWWWWWWWWWWWWWWWWWWWWWWW
W............WW............W
W.WWWW.WWWWW.WW.WWWWW.WWWW.W
W*WWWW.WWWWW.WW.WWWWW.WWWW*W
W.WWWW.WWWWW.WW.WWWWW.WWWW.W
W..........................W
W.WWWW.WW.WWWWWWWW.WW.WWWW.W
W.WWWW.WW.WWWWWWWW.WW.WWWW.W
W......WW....WW....WW......W
WWWWWW.WWWWW.WW.WWWWW.WWWWWW
WWWWWW.WWWWW.WW.WWWWW.WWWWWW
WWWWWW.WW..........WW.WWWWWW
WWWWWW.WW.WWWWWWWW.WW.WWWWWW
WWWWWW.WW.WWWWWWWW.WW.WWWWWW
..........WWWWWWWW..........
WWWWWW.WW.WWWWWWWW.WW.WWWWWW
WWWWWW.WW.WWWWWWWW.WW.WWWWWW
WWWWWW.WW..........WW.WWWWWW
WWWWWW.WW.WWWWWWWW.WW.WWWWWW
WWWWWW.WW.WWWWWWWW.WW.WWWWWW
W............WW............W
W.WWWW.WWWWW.WW.WWWWW.WWWW.W
W*WWWW.WWWWW.WW.WWWWW.WWWW*W
W...WW................WW...W
WWW.WW.WW.WWWWWWWW.WW.WW.WWW
WWW.WW.WW.WWWWWWWW.WW.WW.WWW
W......WW....WW....WW......W
W.WWWWWWWWWW.WW.WWWWWWWWWW.W
W.WWWWWWWWWW.WW.WWWWWWWWWW.W
W..........................W
WWWWWWWWWWWWWWWWWWWWWWWWWWWW

想法是,这是由 java io 包中的读取器逐行读入的,然后用于填充二维数组,我想我可以使用循环来指定使用 paint 类打印图像的位置与数组中的数据。

我目前的问题是 paint 方法,它似乎根本不起作用,但我现在找不到它有什么问题。谁能指出我正确的方向?

(我的代码格式由于这里要求的缩进而有点困惑,我也是 java IO 包的新手,我第一次看到异常处理!)

在此先感谢您的帮助!

//imports
import java.awt.*;
import java.io.*;
import javax.swing.*;


public class Maze extends JFrame
{

//V.Decleration
private static final Dimension WindowSize = new Dimension (600,600);
static char[][] Amaze = new char[28][31];


//default constructor
public Maze()
{
this.setTitle("Pacman");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dimension screensize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
int x = screensize.width/2 - WindowSize.width/2;
int y = screensize.height/2 - WindowSize.height/2;
setBounds(x, y, WindowSize.width, WindowSize.height);
setVisible(true);
}

public void paint (Graphics g)
{

String line = null;

try
{
BufferedReader reader = new BufferedReader(new FileReader("G:\\Game Design\\Pacman\\src\\Maze.txt"));


for (int i=0; i<=31; i++)
{
do
{
try
{

line=reader.readLine();
for (int y=0; y<=28; y++)
{

Amaze[y][i]=line.charAt(y);
}

}catch (IOException e) { }
}

while (line!= null);
try
{
reader.close();
} catch (IOException e) { }
}
} catch (FileNotFoundException e) {}

}

//main
public static void main (String [] args)
{
Maze maze = new Maze();

for (int i=0;i<=28;i++)
System.out.print(Amaze[i][31]);
}

}

最佳答案

您正在创建一个对于循环来说太小的数组。即:new char[28][31];将只允许最大索引为 27 和 30。您的 for 循环是:

for (int i=0; i<=31; i++)
for (int y=0; y<=28; y++)

使用 i<31y<28 ,或将数组增加为 [29][32] .这些中的任何一个都应该可以解决您当前的问题。

关于Java IO,从文件读取并打印到二维字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9040155/

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