Re: Not Painting When Firing

fnl <[email protected]> Thu, 22 Oct 2020 10:58:21 -0700 (PDT)
Newsgroups gmane.comp.java.robocode
Message-ID <[email protected]>
This is my design.
If every robot paint itself, it will be hard to see what is going on on the 
battlefield. Hence, the developer needs to enable painting for the 
individual robot in the robot console.

This is described on this RoboWiki page:
https://robowiki.net/wiki/Robocode/Graphical_Debugging

torsdag den 22. oktober 2020 kl. 19.55.55 UTC+2 skrev [email protected]:

> For some reason, the turn my robot fires, it doesn't seem to paint. Any 
> fixes for this? Code is below.
>
> import java.awt.BasicStroke;
> import java.awt.Color;
> import java.awt.Graphics2D;
>
> import robocode.AdvancedRobot;
> import robocode.Bullet;
> import robocode.HitByBulletEvent;
> import robocode.HitWallEvent;
> import robocode.ScannedRobotEvent;
>
> public class BasicRobot extends AdvancedRobot {
> //Attributes
> private int scanX, scanY;
> private boolean found = false;
> private ScannedRobotEvent latestScan = null;
> /**
> * run: BasicRobot's default behavior
> */
> public void run() {
> // Initialization of the robot should be put here
>
> // After trying out your robot, try uncommenting the import at the top,
> // and the next line:
>
> setColors(Color.BLACK, Color.GRAY, Color.RED); // body,gun,radar
> setScanColor(Color.WHITE);
>
> // Robot main loop
> while(true) {
> // Replace the next 4 lines with any behavior you would like
> if (!found) {
> turnGunRight(5);
> } else {
> scan();
> }
> }
> }
> /**
> * onScannedRobot: What to do when you see another robot
> */
> public void onScannedRobot(ScannedRobotEvent e) {
> found = true;
> latestScan = e;
> // Replace the next line with any behavior you would like
> if (getGunHeat() == 0) 
> fireBullet(3);
> }
> private void drawScannedRobot(ScannedRobotEvent e) {
> double angle = Math.toRadians((getHeading() + e.getBearing()) % 360);
> scanX = (int) (getX() + Math.sin(angle) * e.getDistance());
> scanY = (int) (getY() + Math.cos(angle) * e.getDistance());
> Graphics2D g = this.getGraphics();
> g.setColor(new Color(0xff, 0x00, 0x00, 0x80));
> g.drawLine((int) getX(), (int) getY(), scanX, scanY);
> int w = (int) getWidth();
> g.fillRect(scanX - w/2, scanY - w/2, 40, 40);
> }
> public void onPaint(Graphics2D g) {
> g.setStroke(new BasicStroke(2));
> g.setColor(Color.GRAY);
> int r = (int) (getWidth() * 1.5);
> if (latestScan != null)
> drawScannedRobot(latestScan);
> }
> private void draw(Graphics2D g) {
> g.setStroke(new BasicStroke(2));
> g.setColor(Color.GRAY);
> int r = (int) (getWidth() * 1.5);
> if (latestScan != null)
> drawScannedRobot(latestScan);
> }
> }
>

-- 
You received this message because you are subscribed to the Google Groups "robocode" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
To view this discussion on the web visit https://groups.google.com/d/msgid/robocode/921c3b8c-8ba5-4f5c-acd0-517795911f9fn%40googlegroups.com.