gpt4 book ai didi

java - 碰撞检测返回从图像文件名派生的值

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

我目前正在制作一款小行星风格的小游戏,供本地一所初中的 children 使用。目的是帮助他们制定时间表。

一个随机生成的问题显示在屏幕上(例如:6 * ? = 12),许多带有数字的星星图像漂浮在周围,等待被射击!你控制着一艘船,四处飞来寻找正确的答案。

子弹与星星相撞,需要进行测试以查看用户是否射出正确答案。

星星的文件名只是“1.png”、“2.png”等,我有一个小函数来返回文件名的第一个字符,并将其转换为 int:

public rightAnswer() {

String filename = "12.png"; //would be passed as parameters
int coefficient = 2; //
int answer = 24; //

char first = filename.charAt(0);
char second = filename.charAt(1);
int target;

if (second != '.') { //dealing only with 1 or 2-digit numbers

String both = String.valueOf(first) + String.valueOf(second);
target = Integer.parseInt(both);
}
else {
target = Character.digit(first, 10);
}

if (target * coefficient == answer) {
System.out.println("Answer is correct! (target = " + target + ")");
}
else {
System.out.println("Wrong! (target = " + target + ")");
}
}

在写作的过程中,我遇到了一个问题。我不知道如何检索碰撞星的文件名以将其传递给上述测试函数。

编辑:

尝试一下 Enno Shioji 的解决方案,我得出这个结论:

//star map
Map<ImageEntity, Integer> star_number = new HashMap<ImageEntity, Integer>();

//later, while loading the images into the game...
for (int n = 0; n < 10; n++) { // 10 loops

stars[n] = new ImageEntity(this);
String filename = (n+2) + ".png"; // 2- 12 range
stars[n].load(filename);

star_number.put(stars[n], n+2);
}

//then later again, run when collision is detected between a bullet and a star...
public boolean correctAnswer(ImageEntity star, int expectedAnswer) {

if (star_number.get(star) == expectedAnswer)
return true;

else return false;
}

这看起来对吗?

最佳答案

我不会尝试获取文件名。相反,您应该在 map 中跟踪哪个星星对应哪个数字。

// Do this wherever you have easy access to the file name
Map<Star,Integer> star_number = new HashMap<Star,Integer>();
star_number.put(star1,1);
star_number.put(star2,2);
etc...

//Then later...
boolean collided(Star star, Integer expectedAnswer){
Integer answerGiven = star_number.get(star);
return expectedAnswer.equals(answerGiven);
}

或者,您也可以通过这样定义 Star 对象来保持跟踪:

class Star{
Integer number;
StarImage image;
Star(StarImage image, Integer number){
this.number = number;
this.image = image;
}
// then later...
boolean collided(Star star, Integer expectedAnswer){
return star.number.equals(expectedAnswer);
}

希望这对您有所帮助。祝你的项目好运:)

关于java - 碰撞检测返回从图像文件名派生的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13645524/

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