⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 helkcraft.java

📁 这是使用Java编写一个模仿星际全屏界面的我的Java课程设计。可以选中画面上的单元
💻 JAVA
📖 第 1 页 / 共 2 页
字号:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.swing.*;
import java.util.*;
import java.util.Timer;
import java.awt.geom.*;

/**
* @version 0.0
* @author Liu Fangran
*/

class UnitManager {
        LinkedList units = new LinkedList();

        public UnitManager() {
        }

        public void createUnit(Unit unit) {
                units.add(unit);
        }

        public void addUnitGroup(LinkedList list) {
                units.addAll(list);
        }

        public void destoryUnit(Unit unit) {
                units.remove(unit);
        }

        public void updateAll() {
                ListIterator lit = units.listIterator();
                Unit u;
                while (lit.hasNext()) {
                        (u = (Unit)lit.next()).update();
                }
        }

        public void showAll(Graphics g, Rectangle r) {
                ListIterator lit = units.listIterator();
                Unit u;
                while (lit.hasNext()) {
                        u = (Unit)lit.next();		
                        if (r.contains((int)(u.getX()), (int)(u.getY()))) {
                                u.show(g, r.getLocation());
                        }
                }
        }

        public void miniShowAll(Graphics g, Point p, int scale) {
                ListIterator lit = units.listIterator();
                while (lit.hasNext()) {
                        ((Unit)(lit.next())).miniShow(g, p, scale);
                }

        }


        public LinkedList getUnitGroup() {
                return units;
        }

        public Unit getUnitAt(Point p) {
                ListIterator lit = units.listIterator();
                Unit u;
                while (lit.hasNext()) {
                        u = (Unit)(lit.next());
                        if(Math.sqrt((u.getX() - p.x) * (u.getX() - p.x) + (u.getY() - p.y) * (u.getY() - p.y)) < u.getSize().width / 2) {
                                return u;
                        }  
                }
                return null;
        }

}

/**
* @version 0.0
* @author Liu Fangran
*/

class UnitLayout {
        public UnitLayout() {
        }

        static public LinkedList square(int n, Position p, int interval) {
                Position pos = new Position(p);
                LinkedList list = new LinkedList();
                for(int i = 0; i < n; i++) {
                        pos.x = p.x;
                        for(int j = 0; j < n; j++) {
                                list.add(new MobileUnit(pos));
                                pos.x += interval;
                        }
                        pos.y += interval;
                }
                return list;
        }

}

/**
* @version 0.0
* @author Liu Fangran
*/
class UnitControler {
        LinkedList units = new LinkedList();

        public UnitControler() {
        }
        public void addUnit(Unit unit) {
                units.add(unit);
                unit.setSelected(true);
        }
        public void removeUnit(Unit unit) {                
                if(units.remove(unit)) {
                        unit.setSelected(false);
                }
        }
        public void removeAll() {
                ListIterator lit = units.listIterator();
                while(lit.hasNext()) {
                        ((Unit)(lit.next())).setSelected(false);
                        lit.remove();
                }
        }
        public void setUnitGroup(LinkedList units) {
                removeAll();
                ListIterator lit = units.listIterator();
                this.units = units;         
                lit = units.listIterator();
                Unit u;
                while(lit.hasNext()) {
                       ((Unit)(lit.next())).setSelected(true);
                }

        }

        public void setUnitGroup(Unit u) {
                removeAll();
                units.add(u);
                u.setSelected(true);
        }

        public void setUnitGroup(LinkedList units, Rectangle r) {
                ListIterator lit = this.units.listIterator();
                while(lit.hasNext()) {
                        ((Unit)(lit.next())).setSelected(false);     
                }
                lit = units.listIterator();
                this.units = new LinkedList();
                Unit u;
                while(lit.hasNext()) {
                        u = (Unit)(lit.next());
                        if(r.contains((int)(u.getX()), (int)(u.getY()))){
                                this.units.add(u);
                                u.setSelected(true);
                        }
                }

        }

        public void executeCommand(Command cmd) {
                ListIterator lit = units.listIterator();
                while(lit.hasNext()) {
                       ((Unit)lit.next()).executeCommand(cmd);
                }
        }

}

/**
* @version 0.0
* @author Liu Fangran
*/

interface Unit {
        public void setColor(Color c);
        public Color getColor();
        public double getX();
        public double getY();
        public Position getPosition();
        public Dimension getSize();
        public void setPosition(double x, double y);
        public void setPosition(Position p);
        public void setSize(Dimension d);
        public void setSize(int w, int h);
        public void setSelected(boolean s);
        public boolean isSelected();
        public void update();
        public void show(Graphics g, Point p);
        public void miniShow(Graphics g, Point p, int scale);
        public void executeCommand(Command cmd);

}

/**
* @version 0.0
* @author Liu Fangran
*/

class Position {
        public double x;
        public double y;

        public Position() {
        }

        public Position(double x, double y) {
                this.x = x;
                this.y = y;
        }

        public Position(Position p) {
                x = p.x;
                y = p.y;
        }

        public void setPosition(double x, double y) {
                this.x = x;
                this.y = y;
        }

        public void setPosition(Position p) {
                x = p.x;
                y = p.y;
        }
        
        public double getX() {
                return x;
        }

        public double getY() {
                return y;
        }
}

/**
* @version 0.0
* @author Liu Fangran
*/
class MoveCommand implements Command {
        Position desPos;
       
        public MoveCommand(double x, double y) {
                desPos = new Position(x, y);
        }

        public MoveCommand(Position p) {
                desPos = new Position(p.x, p.y);
        }

        public double getX() {
                return desPos.x;
        }

        public double getY() {
                return desPos.y;
        }

        public Position getPosition() {
                return desPos;
        }
	
}

/**
* @version 0.0
* @author Liu Fangran
*/
interface Command {
}
/**
* @version 0.0
* @author Liu Fangran
*/

class MobileUnit implements Unit{
        boolean isMove;
        boolean isSlct;
        Position curPos;
        Position desPos;
        double sclX;
        double sclY;
        Color clr = Color.BLUE;
        Color miniClr = Color.BLUE;

        static double vel = 2.0;
        static double rngStop = 2.1;
        static Dimension size = new Dimension(30,30); // selected size.
        static Dimension sizeDraw = new Dimension(26, 26);

        public MobileUnit() {
                curPos = new Position(0.0, 0.0);
                desPos = new Position(0.0, 0.0);
        }

        public MobileUnit(Position p) {
                curPos = new Position(p);
                desPos = new Position(p);
        }

        public MobileUnit(double x, double y) {
                curPos = new Position(x, y);
                desPos = new Position(x, y);
        }

        public void setColor(Color c) {
                clr = c;
        }

        public Color getColor() {
                return clr;
        }

        public boolean isMoving() {
                return isMove;
        }

        public double getX() {
                return curPos.x;
        }

        public double getY() {
                return curPos.y;
        }

        public Position getPosition() {
                return curPos;
        }

        public Dimension getSize() {
                return size;
        }

        public void setPosition(double x, double y) {
                curPos.setPosition(x, y);
        }

        public void setPosition(Position p) {
                curPos.setPosition(p);
        }

        public void setSize(Dimension d) {
                size.setSize(d);
        }

        public void setSize(int w, int h) {
                size.setSize(w, h);
        }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -