All Downloads are FREE. Search and download functionalities are using the official Maven repository.

sample.Crazy Maven / Gradle / Ivy

/*
 * Copyright (c) 2001-2023 Mathew A. Nelson and Robocode contributors
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * https://robocode.sourceforge.io/license/epl-v10.html
 */
package sample;


import robocode.*;

import java.awt.*;


/**
 * Crazy - a sample robot by Mathew Nelson.
 * 

* This robot moves around in a crazy pattern. * * @author Mathew A. Nelson (original) * @author Flemming N. Larsen (contributor) */ public class Crazy extends AdvancedRobot { boolean movingForward; /** * run: Crazy's main run function */ public void run() { // Set colors setBodyColor(new Color(0, 200, 0)); setGunColor(new Color(0, 150, 50)); setRadarColor(new Color(0, 100, 100)); setBulletColor(new Color(255, 255, 100)); setScanColor(new Color(255, 200, 200)); // Loop forever while (true) { // Tell the game we will want to move ahead 40000 -- some large number setAhead(40000); movingForward = true; // Tell the game we will want to turn right 90 setTurnRight(90); // At this point, we have indicated to the game that *when we do something*, // we will want to move ahead and turn right. That's what "set" means. // It is important to realize we have not done anything yet! // In order to actually move, we'll want to call a method that // takes real time, such as waitFor. // waitFor actually starts the action -- we start moving and turning. // It will not return until we have finished turning. waitFor(new TurnCompleteCondition(this)); // Note: We are still moving ahead now, but the turn is complete. // Now we'll turn the other way... setTurnLeft(180); // ... and wait for the turn to finish ... waitFor(new TurnCompleteCondition(this)); // ... then the other way ... setTurnRight(180); // .. and wait for that turn to finish. waitFor(new TurnCompleteCondition(this)); // then back to the top to do it all again } } /** * onHitWall: Handle collision with wall. */ public void onHitWall(HitWallEvent e) { // Bounce off! reverseDirection(); } /** * reverseDirection: Switch from ahead to back & vice versa */ public void reverseDirection() { if (movingForward) { setBack(40000); movingForward = false; } else { setAhead(40000); movingForward = true; } } /** * onScannedRobot: Fire! */ public void onScannedRobot(ScannedRobotEvent e) { fire(1); } /** * onHitRobot: Back up! */ public void onHitRobot(HitRobotEvent e) { // If we're moving the other robot, reverse! if (e.isMyFault()) { reverseDirection(); } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy