基于java+swing的潜艇大战项目游戏(java+swing)
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
leftPanel.elastic.slide(50, -300);
rightPanel.elastic.slide(600, 200);
try {
Thread.sleep(200);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
gamePanel.switchNewGame();
}
};
ActionListener loadbtnLis = new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
};
}
/**
}
public void update(long elapsedTime) {
x = elastic.update(elapsedTime);
setLocation(x, y);
}
}
class LeftPanel extends JPanel {
private int x, y = 20;
Elastic elastic = new Elastic(-50, 50);
Image image = ResourceManager.loadImage("left.png");
String labels[] = { "Open", "Closed","Computer"};
LinkedList<DefaultComboBoxModel> players = new LinkedList<DefaultComboBoxModel>();
String type[] = { "Terran"};
JComboBox[][] jcbs = new JComboBox[4][2];
control = new Control(this, gui.frame);
control.addKeyPressListener(new KeyPressListener(){
public void press(int keyCode) {
if(keyCode==KeyEvent.VK_1){
gridMapRender.blur();
for(Tile tile:gridmap.getTiles()){
boolean isScv = (tile.getType()==gridMapRender.getCurrentType())
&&(tile instanceof Scv);
if(isScv){
tile.focus();
public void delPlayer(int index,String oldName){
players.get(index).removeElement(oldName);
// for(int i=0;i<players.get(index).getSize();++i){
// Object item = players.get(index).getElementAt(i);
// if(item.equals(newName)){
// players.get(index).setSelectedItem(newName);
// return;
// }
// }
// players.get(index).addElement(newName);
}
Robot robot;
public void init(){
initControl();
gridmap = ResourceManager.resourceManager.getGridMap();
gridMapRender = gridmap.getTileMapRender();
gridMapRender.screenWidth = getWidth();
gridMapRender.screenHeight = getHeight();
controlPanel = new ConsolePanel(gridMapRender);
controlPanel.setLocation(getWidth() - controlPanel.getWidth(), 0);
add(controlPanel);
try {
robot = new Robot();
} catch (AWTException e) {
e.printStackTrace();
}
gridMapRender.addMsg("娓╅Θ鎻愮ず锛氭寜鏁板瓧閿�閫変腑鎵�湁鍐滄皯");
gridMapRender.addMsg("娓╅Θ鎻愮ず锛氭寜鏁板瓧閿�閫変腑鎵�湁鏈烘灙鍏�");
}
gridMapRender.addMsg("娓╅Θ鎻愮ず锛氭寜鏁板瓧閿�閫変腑鎵�湁鍐滄皯");
gridMapRender.addMsg("娓╅Θ鎻愮ず锛氭寜鏁板瓧閿�閫変腑鎵�湁鏈烘灙鍏�");
}
private void initControl(){
GameGUI gui = (GameGUI) this.getParent();
control = new Control(this, gui.frame);
control.addKeyPressListener(new KeyPressListener(){
public void press(int keyCode) {
if(keyCode==KeyEvent.VK_1){
// }
//System.out.println("gameGUI.netWorkManager:"+gameGUI.netWorkManager);
players.add(new DefaultComboBoxModel());
players.add(mode1);
players.add(mode2);
players.add(mode3);
for(int y=0;y<jcbs.length;++y){
jcbs[y][0] = new JComboBox();
});
control.addDragListener(new DragListener(){
public void drag(int x, int y, int dx, int dy) {
gridMapRender.focus(x, y, dx, dy);
}
});
control.addLeftPressListener(new LeftPressListener(){
public void press(int x, int y) {
//gridMapRender.focus(x, y);
gridMapRender.operate(x, y);
}
});
control.addRightPressListener(new RightPressListener(){
cardLayout.show(this, "progress");
currentPanel = progressPanel;
Thread t = new Thread(){
public void run(){
mapRender = ResourceManager.load(type,types);
mapRender.setNetWorkManager(netWorkManager);
}
};
t.start();
}
public void switchGame() {
gamePanel.init();
cardLayout.show(this, "game");
currentPanel = gamePanel;
}
for(int i=1;i<leftPanel.players.size();++i){
DefaultComboBoxModel cbm = leftPanel.players.get(i);
if(cbm.getSelectedItem().equals("Computer"))
cbm.setSelectedItem("Open");
}
}
}
class TextPanel extends JPanel {
private int x, y = 300;
Elastic elastic = new Elastic(-50, 50);
}
public void update(long elapsedTime) {
x = elastic.update(elapsedTime);
setLocation(x, y);
}
}
class LeftPanel extends JPanel {
private int x, y = 20;
Elastic elastic = new Elastic(-50, 50);
Image image = ResourceManager.loadImage("left.png");
String labels[] = { "Open", "Closed","Computer"};
LinkedList<DefaultComboBoxModel> players = new LinkedList<DefaultComboBoxModel>();
add(returnbtn);
}
public void paintComponent(Graphics g) {
g.drawImage(image, getWidth() - image.getWidth(null), 0, null);
}
public void update(long elapsedTime) {
x = elastic.update(elapsedTime);
setLocation(x, y);
}
ActionListener startListen = new ActionListener() {
public void actionPerformed(ActionEvent e) {
PlayerList playerList = gameGUI.netWorkManager.startGame();
public NewGamePanel(GameGUI gameGUI, String name) {
super(gameGUI, name);
leftPanel = new LeftPanel(this);
rightPanel = new RightPanel(this);
this.add(leftPanel);
this.add(rightPanel);
}
public void paintComponent(Graphics g) {
g.drawImage(main, 0, 0, null);
}
public void update(long elapsedTime) {
leftPanel.update(elapsedTime);
rightPanel.update(elapsedTime);
}
public void reset() {
leftPanel.elastic.slide(-50, 50);
rightPanel.elastic.slide(800, -180);
if(gameGUI.netWorkManager instanceof MockNetWorkManager){
leftPanel.players.get(0).removeAllElements();
leftPanel.players.get(0).addElement("Player");
for(int i=1;i<leftPanel.players.size();++i){
}
游戏界面:
@SuppressWarnings({ "unused", "serial" })
public class GameGUI extends JPanel {
//卡片布局器
private CardLayout cardLayout = new CardLayout();
//进度条面板
private ProgressPanel progressPanel;
//菜单面板
private MainMenuPanel menuPanel;
//游戏面板
private GamePanel gamePanel;
//需要update
private Abstractpanel currentPanel;
//单人游戏面板
private SingleGamePanel singleGamePanel;
//多人能游戏面板
private MutilPlayerPanel mutilPlayerPanel;
}
public void paintComponent(Graphics g) {
g.drawImage(image, 0, 0, null);
g.setColor(fillColor);
g.fillRect(20, 45, getWidth() - 25, getHeight() - 50);
g.setColor(borderColor);
g.drawRect(20, 45, getWidth() - 25, getHeight() - 50);
g.setColor(titleColor);
g.drawString("Create Game:", 50, 100);
}
public void update(long elapsedTime) {
x = elastic.update(elapsedTime);
//鐢绘帶鍒剁嚎
control.drag(g);
}
public void update(long elapsedTime) {
gridMapRender.update(elapsedTime);
}
}
新游戏界面:
public class NewGamePanel extends Abstractpanel {
LeftPanel leftPanel;
RightPanel rightPanel;
public NewGamePanel(GameGUI gameGUI, String name) {
super(gameGUI, name);
leftPanel = new LeftPanel(this);
leftPanel.elastic.slide(-50, 50);
rightPanel.elastic.slide(800, -180);
if(gameGUI.netWorkManager instanceof MockNetWorkManager){
leftPanel.players.get(0).removeAllElements();
leftPanel.players.get(0).addElement("Player");
for(int i=1;i<leftPanel.players.size();++i){
DefaultComboBoxModel cbm = leftPanel.players.get(i);
cbm.setSelectedItem("Computer");
}
}else{
for(int i=1;i<leftPanel.players.size();++i){
DefaultComboBoxModel cbm = leftPanel.players.get(i);
if(cbm.getSelectedItem().equals("Computer"))
cbm.setSelectedItem("Open");
}
}
}
class TextPanel extends JPanel {
System.out.println("addplayer:"+index+","+name);
players.get(index).addElement(name);
players.get(index).setSelectedItem(name);
}
public void selectPlayer(int index,String name){
players.get(index).setSelectedItem(name);
}
public void delPlayer(int index,String oldName){
players.get(index).removeElement(oldName);
// for(int i=0;i<players.get(index).getSize();++i){
// Object item = players.get(index).getElementAt(i);
// if(item.equals(newName)){
// players.get(index).setSelectedItem(newName);
// return;
// }
// }
// players.get(index).addElement(newName);
public GameItemListener(int index) {
this.index = index;
}
public void itemStateChanged(ItemEvent e) {
String value = e.getItem().toString();
if(value.equals("Closed")||e.getItem().toString().equals("Open")){
jcbs[index][1].setVisible(false);
}else{
jcbs[index][1].setVisible(true);
}
}
public GameItemListener(int index) {
this.index = index;
}
public void itemStateChanged(ItemEvent e) {
String value = e.getItem().toString();
if(value.equals("Closed")||e.getItem().toString().equals("Open")){
jcbs[index][1].setVisible(false);
}else{
jcbs[index][1].setVisible(true);
}
}
}
private void initJComboBox(JComboBox jcb){
jcb.setSize(120, 20);
jcb.setOpaque(false);
jcb.setFocusable(false);
public void itemStateChanged(ItemEvent e) {
String value = e.getItem().toString();
if(value.equals("Closed")||e.getItem().toString().equals("Open")){
jcbs[index][1].setVisible(false);
}else{
jcbs[index][1].setVisible(true);
}
}
}
private void initJComboBox(JComboBox jcb){
jcb.setSize(120, 20);
jcb.setOpaque(false);
public TextPanel() {
setLayout(null);
setSize(400, 270);
setLocation(x, y);
}
public void paintComponent(Graphics g) {
g.drawImage(image, 0, 0, null);
g.setColor(fillColor);
g.fillRect(20, 345, getWidth() - 25, getHeight() - 50);
final DefaultComboBoxModel mode1 = new DefaultComboBoxModel(labels);
mode1.addListDataListener(new ListDataListener(){
public void contentsChanged(ListDataEvent e) {
DefaultComboBoxModel model = (DefaultComboBoxModel) e.getSource();
Object item = model.getSelectedItem();
//System.out.println(item+ ".contentsChanged() 1");
if(item.equals("Computer") || item.equals("Open") || item.equals("Closed")){
gameGUI.netWorkManager.select(item.toString(), 1);
//System.out.println(item);
}
}
public void intervalAdded(ListDataEvent e) {}
public void intervalRemoved(ListDataEvent e) {}
});
final DefaultComboBoxModel mode2 = new DefaultComboBoxModel(labels);
mode2.addListDataListener(new ListDataListener(){
g.drawRect(20, 345, getWidth() - 25, getHeight() - 50);
}
public void update(long elapsedTime) {
x = elastic.update(elapsedTime);
setLocation(x, y);
}
}
class LeftPanel extends JPanel {
private int x, y = 20;
Elastic elastic = new Elastic(-50, 50);
Image image = ResourceManager.loadImage("left.png");
String labels[] = { "Open", "Closed","Computer"};
LinkedList<DefaultComboBoxModel> players = new LinkedList<DefaultComboBoxModel>();
String type[] = { "Terran"};
JComboBox[][] jcbs = new JComboBox[4][2];
public void actionPerformed(ActionEvent e) {
}
};
}
/**
* 右边Panel
*/
class RightPanel extends JPanel {
private int x, y;
Elastic elastic = new Elastic(800, -180);
Image image = ResourceManager.loadImage("right.png");
JButton startbtn = new JButton("Start");
JButton returnbtn = new JButton("Return");
location+=30;
}
}
public void addPlayer(int index,String name){
System.out.println("addplayer:"+index+","+name);
players.get(index).addElement(name);
players.get(index).setSelectedItem(name);
/**
* 右边Panel
*/
class RightPanel extends JPanel {
private int x, y;
Elastic elastic = new Elastic(800, -180);
Image image = ResourceManager.loadImage("right.png");
JButton startbtn = new JButton("Start");
JButton returnbtn = new JButton("Return");
public RightPanel(JPanel parent) {
setLayout(null);
setSize(180, 180);
x = (parent.getWidth() - getWidth());
y = 460;
setLocation(x, y);
initButton(startbtn, startListen);
Thread t = new Thread(){
public void run(){
mapRender = ResourceManager.load(type,types);
mapRender.setNetWorkManager(netWorkManager);
}
};
t.start();
}
public void switchGame() {
gamePanel.init();
cardLayout.show(this, "game");
currentPanel = gamePanel;
}
public void switchSingleGame() {
cardLayout.show(this, "singleGame");
singleGamePanel.reset();
currentPanel = singleGamePanel;
}