为了账号安全,请及时绑定邮箱和手机立即绑定

g.drawString 在两个方块碰撞时不绘制游戏结束

g.drawString 在两个方块碰撞时不绘制游戏结束

慕桂英546537 2023-03-09 16:45:05
我正在尝试用正方形制作一个虚拟标签。现在,我专注于让游戏说游戏结束并在游戏玩家抓住另一个玩家时稍后关闭。但是,当两个方块碰撞时,程序不会向屏幕写入任何内容。我知道调用 g.drawString 的 if 语句有效,因为它在这里输出到控制台两次,所以我很困惑为什么 g.drawString 不起作用。package com.Arman;import javax.swing.*;import java.awt.*;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import java.util.HashSet;public class Virtual_Tag {    static int x1 = 0;    static int y1 = 0;    static Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();    static int height = (int) dimension.getHeight();    static int width = (int) dimension.getWidth();    tatic int sWidth = (int) (Math.round(100 * width / 1366.0));    static int sHeight = (int) (Math.round(100 * height / 768.0));    static int x2 = width - sWidth;    static int y2 = height - sHeight;    static myGraphicsPanel graphics = new myGraphicsPanel();    static boolean[] move = new boolean[8];    static int xSpeed1;    static int ySpeed1;    static int xSpeed2;    static int ySpeed2;    static boolean xcol, ycol;    static JFrame frame = new JFrame();
查看完整描述

1 回答

?
哔哔one

TA贡献1854条经验 获得超8个赞

更改您的打印坐标以将字符串向右和向下移动。尝试200,200

此外,您应该执行以下操作:

  • 摆脱你的静态陈述。

  • 然后将 main 中的代码移动到方法中start()。然后,您可以通过执行以下操作来调用您的程序:

  new VirtualTag().start();

通常你应该在 main 中启动你的程序,如下所示:

 SwingUtilities.invokeLater(()->new Virtual_Tag().start());

但在这种情况下,这是行不通的,因为您将不断循环,并且Event Dispatch Thread不会绘制任何内容。


查看完整回答
反对 回复 2023-03-09
  • 1 回答
  • 0 关注
  • 80 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信