1

我正在尝试通过将其 x 和 y 值转换为负值(我的屏幕是 500 x 500 并且无法调整大小)来测试从屏幕中删除图像,然后通过转换将其返回到下一张幻灯片中的屏幕x 和 y 值恢复为正数,因此我可以将它们转换回负数以再次删除它们。

在一个类中(在屏幕上显示一个红色指针,我可以移动到其他项目的边界)我有这个:

import java.awt.Rectangle;
public void checkBoundariesTouching() {
    NextSlide next = MainFrame.getSlide();

    for (int i = 0; i < 1; i++) {
        if (getBounds().intersects(next.getBounds())) {
            MainFrame.slide += 1;

在我的 MainFrame 中,这张幻灯片的增加改变了背景,使我的幻灯片变得有趣,并改变了显示的文字。

我有另一个生成黑色矩形的类,我将它们一个一个删除以揭示我随后解释的写作要点。我删除这样的矩形:

import java.awt.Rectangle;
public class BlackRectangle extends Entity {

public BlackRectangle(int x, int y) {
    super(x, y);

}    
public void update() {
    int slide = MainFrame.getSlide();
    checkBoundariesTouching();
    if (slide >= 2) {
        if (x < 0) {
            x = -x;
        }
        if (y < 0) {
            y = -y;
        }
        checkBoundariesTouching();
    }
}

public void checkBoundariesTouching() {

    Pointer pointer = MainFrame.getPointer();
    NextSlide next = MainFrame.getSlide();
    if (getBounds().intersects(pointer.getBounds())) {
        x = -x;
        y = -y;


    }

当幻灯片等于 1 时,我可以毫无问题地删除黑色方块。但是,当指针接触黑色矩形时,当我增加到下一张幻灯片(从幻灯片 2 开始)时,它会移出屏幕,但是一旦我将指针移离它,黑色矩形就会返回并覆盖信息。有没有办法可以修复此代码,因为它只更改更新方法?

4

3 回答 3

2

我承认我对 Java 不太了解,两天前就开始了,但我正在尝试使用 Java 代码进行演示,以证明我可以在很短的时间内掌握程序的基本概念并在我的基础上进行构建继续(我需要证明这一点才能进入与计算机科学无关的大学课程。)

我会认真建议你不要这样做。

如果课程的先决条件是您对编程有基本的掌握......而您没有基本的掌握......那么您将进入真正的问题。特别是,如果这不是 CS 课程,那么如果您因编程技能差而遇到问题,他们不太可能帮助您。

OTOH,如果问题是您擅长(比如说)C# 而不是 Java,那么正确的解决方案是花钱购买开发人员许可证。'因为你将需要它来完成作为课程的一部分的开发工作......或者在未来。

(但您肯定可以找到一种更便宜的方式来获得 Visual Studio 许可证。我可以从 MS Store 以不到 1.2 万澳元的价格获得“Visual Studio Professional 2012 with MSDN”......没有学生折扣。)


我承认你的观点,他们并没有专门测试你的 Java 能力。但是,它们正在测试您作为程序员的一般能力。当然,这包括您为工作选择正确工具的能力......其中包括不要尝试使用您不熟悉的编程语言在紧迫的期限内进行一些编程!

于 2013-07-28T02:03:15.703 回答
1

如果当幻灯片 = 1 时代码工作正常,我建议删除它:

if (slide >= 2) {
    if (x < 0) {
        x = -x;
    }
    if (y < 0) {
        y = -y;
    }
    checkBoundariesTouching();
}

如果您需要该代码将框移回屏幕上,则可以将 if 语句放在单独的方法中,并在更改幻灯片时调用该方法。

于 2013-07-28T01:53:52.057 回答
0

检查更新方法中的附加条件。该方法必须如下所示:-

        public void update() {
            int slide = MainFrame.getSlide();
            checkBoundariesTouching();
            if (slide >= 2) {
                if (x < 0) {
                    x = x*-1;
                }
                if (y < 0) {
                    y = y*-1;
                }


            }
        }


public void checkBoundariesTouching() {

    Pointer pointer = MainFrame.getPointer();
    NextSlide next = MainFrame.getSlide();
    if (getBounds().intersects(pointer.getBounds())) {
    if(x>0){
        x = -x;
           }
    if(y>0){
        y = -y;
           }

    }
于 2013-07-28T01:54:34.653 回答