基于java+swing的潜艇大战项目游戏(java+swing)
基于java+swing的潜艇大战项目游戏(java+swing)
功能简介:
Java swing实现的一款小游戏潜艇大战的项目源码
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
boolean isScv = (tile.getType()==gridMapRender.getCurrentType())&&(tile instanceof Scv);if(isScv){tile.focus();gridMapRender.addFocusSprite((Sprite)tile);}}}else if(keyCode==KeyEvent.VK_2){gridMapRender.blur();for(Tile tile:gridmap.getTiles()){boolean isMarine = tile.getType()==gridMapRender.getCurrentType()&&tile instanceof Marine;if(isMarine){tile.focus();gridMapRender.addFocusSprite((Sprite)tile);}}}
}public void addPlayer(int index,String name){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){
* 右边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);
mode2.addListDataListener(new ListDataListener(){public void contentsChanged(ListDataEvent e) {String value = mode2.getSelectedItem().toString();if(value.equals("Computer") || value.equals("Open") || value.equals("Closed")){gameGUI.netWorkManager.select(value,2);}}public void intervalAdded(ListDataEvent e) {}public void intervalRemoved(ListDataEvent e) {}});final DefaultComboBoxModel mode3 = new DefaultComboBoxModel(labels);mode3.addListDataListener(new ListDataListener(){public void contentsChanged(ListDataEvent e) {
ActionListener returnListen = new ActionListener() {public void actionPerformed(ActionEvent e) {leftPanel.players.get(0).removeAllElements();gameGUI.netWorkManager.close();GameGUI gamePanel = (GameGUI) NewGamePanel.this.getParent();leftPanel.elastic.slide(50, -300);rightPanel.elastic.slide(600, 200);try {Thread.sleep(200);} catch (InterruptedException e1) {e1.printStackTrace();}gamePanel.switchMainMenu();}
}); control.addMoveListener(new MoveListener(){public void move(int x, int y) {int offsetX = gridMapRender.offsetX;int screenX = getWidth()-GridMapRender.TILE_WIDTH;//濡傛灉榧犳爣浣嶄簬灞忓箷瀹藉害鍓嶄竴涓猅ILE瀹藉害if(x>screenX&&offsetX<GridMapRender.tileXToPx(107)){//鍚戝彸绉诲姩涓�釜tile瀹藉害gridMapRender.offsetX=offsetX+GridMapRender.TILE_WIDTH;robot.mouseMove(screenX, y);++controlPanel.map_panel.x;}//濡傛灉榧犳爣鍦ㄤ竴涓猅ILE瀹藉害if(x<GridMapRender.TILE_WIDTH&&offsetX>0){gridMapRender.offsetX=offsetX-GridMapRender.TILE_WIDTH;robot.mouseMove(GridMapRender.TILE_WIDTH, y);--controlPanel.map_panel.x;
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"};
if(x<GridMapRender.TILE_WIDTH&&offsetX>0){gridMapRender.offsetX=offsetX-GridMapRender.TILE_WIDTH;robot.mouseMove(GridMapRender.TILE_WIDTH, y);--controlPanel.map_panel.x;}//绾靛潗鏍囧拰姘村钩鍧愭爣閫昏緫鐩稿悓int offsetY = gridMapRender.offsetY;int screenY = getHeight()-GridMapRender.TILE_HEIGHT;if(y>screenY&&offsetY<GridMapRender.tileXToPx(110)){//鍚戝彸绉诲姩涓�釜tile瀹藉害gridMapRender.offsetY=offsetY+GridMapRender.TILE_HEIGHT;robot.mouseMove(x, screenY);++controlPanel.map_panel.y;}if(y<GridMapRender.TILE_HEIGHT&&offsetY>0){gridMapRender.offsetY=offsetY-GridMapRender.TILE_WIDTH;robot.mouseMove(x, GridMapRender.TILE_HEIGHT);--controlPanel.map_panel.y;}gridMapRender.moveX = x;
// return;
// }
// }
// players.get(index).addElement(newName);}private class GameItemListener implements ItemListener{int index;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 void addPlayer(int index,String name){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);
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);
--controlPanel.map_panel.y;}gridMapRender.moveX = x;gridMapRender.moveY = y;}});
public LeftPanel(JPanel parenPanel) {setLayout(null);setSize(400, 270);setLocation(x, y);int location=120;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) {}});
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());
gamePanel.switchMainMenu();}};}
}
游戏界面:
@SuppressWarnings({ "unused", "serial" })
public class GameGUI extends JPanel {//卡片布局器private CardLayout cardLayout = new CardLayout();//进度条面板 private ProgressPanel progressPanel; //菜单面板private MainMenuPanel menuPanel;//游戏面板private GamePanel gamePanel;//需要updateprivate Abstractpanel currentPanel;
}}
}
游戏界面:
/*** 游戏界面*/
public class GamePanel extends Abstractpanel{GridMap gridmap;GridMapRender gridMapRender;Control control;ConsolePanel controlPanel;Robot robot; public void init(){initControl();gridmap = ResourceManager.resourceManager.getGridMap();
};}
}
游戏界面:
@SuppressWarnings({ "unused", "serial" })
public class GameGUI extends JPanel {//卡片布局器private CardLayout cardLayout = new CardLayout();//进度条面板 private ProgressPanel progressPanel; //菜单面板private MainMenuPanel menuPanel;//游戏面板private GamePanel gamePanel;//需要updateprivate Abstractpanel currentPanel;//单人游戏面板private SingleGamePanel singleGamePanel;//多人能游戏面板private MutilPlayerPanel mutilPlayerPanel;NewGamePanel newGamePanel;
}});control.addRightPressListener(new RightPressListener(){public void press(int x, int y) {gridMapRender.move(x, y);}}); control.addMoveListener(new MoveListener(){public void move(int x, int y) {int offsetX = gridMapRender.offsetX;int screenX = getWidth()-GridMapRender.TILE_WIDTH;//濡傛灉榧犳爣浣嶄簬灞忓箷瀹藉害鍓嶄竴涓猅ILE瀹藉害if(x>screenX&&offsetX<GridMapRender.tileXToPx(107)){
rightPanel.elastic.slide(600, 200);try {Thread.sleep(200);} catch (InterruptedException e1) {e1.printStackTrace();}gameGUI.switchProgress(playerList.getType(),playerList.getPlayers());}}};ActionListener returnListen = new ActionListener() {public void actionPerformed(ActionEvent e) {leftPanel.players.get(0).removeAllElements();gameGUI.netWorkManager.close();
int location=120;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(){public void contentsChanged(ListDataEvent e) {String value = mode2.getSelectedItem().toString();if(value.equals("Computer") || value.equals("Open") || value.equals("Closed")){gameGUI.netWorkManager.select(value,2);
public void intervalRemoved(ListDataEvent e) {}});//如果是SingleGame
// if(gameGUI.netWorkManager instanceof MockNetWorkManager){// players.add(new DefaultComboBoxModel(new String[]{"Player"}));
// }else{// players.add(new DefaultComboBoxModel());
// }//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){
//卡片布局器private CardLayout cardLayout = new CardLayout();//进度条面板 private ProgressPanel progressPanel; //菜单面板private MainMenuPanel menuPanel;//游戏面板private GamePanel gamePanel;//需要updateprivate Abstractpanel currentPanel;//单人游戏面板
//进度条面板 private ProgressPanel progressPanel; //菜单面板private MainMenuPanel menuPanel;//游戏面板private GamePanel gamePanel;//需要updateprivate Abstractpanel currentPanel;//单人游戏面板private SingleGamePanel singleGamePanel;//多人能游戏面板private MutilPlayerPanel mutilPlayerPanel;NewGamePanel newGamePanel;NetWorkManager netWorkManager;GridMapRender mapRender;JFrame frame;
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);jcb.setRenderer(new StarComboBoxRender());jcb.setUI((ComboBoxUI) StarComboBoxUI.createUI(jcb));jcb.setBorder(new RoundBorder(Color.red));add(jcb);}public void paintComponent(Graphics g) {g.drawImage(image, 0, 0, null);g.setColor(fillColor);g.fillRect(20, 45, getWidth() - 25, getHeight() - 50);
});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);
if(value.equals("Computer") || value.equals("Open") || value.equals("Closed")){gameGUI.netWorkManager.select(value,3);}}public void intervalAdded(ListDataEvent e) {}public void intervalRemoved(ListDataEvent e) {}});//如果是SingleGame
// if(gameGUI.netWorkManager instanceof MockNetWorkManager){// players.add(new DefaultComboBoxModel(new String[]{"Player"}));
// }else{// players.add(new DefaultComboBoxModel());
// }//System.out.println("gameGUI.netWorkManager:"+gameGUI.netWorkManager);players.add(new DefaultComboBoxModel());players.add(mode1);players.add(mode2);players.add(mode3);
基于java+swing的潜艇大战项目游戏(java+swing)相关推荐
- 基于JavaSwing开发潜艇大战小游戏 课程设计 大作业源码
基于JavaSwing开发潜艇大战小游戏: (大作业) 开发环境: Windows操作系统 开发工具: Eclipse+Jdk 运行效果图: 基于JavaSwing开发潜艇大战小游戏: (大作业) ...
- Java项目:潜艇大战项目(java+swing)
源码获取:博客首页 "资源" 里下载! 功能简介: Java swing实现的一款小游戏潜艇大战的项目源码 游戏界面: @SuppressWarnings({ "unus ...
- java游戏代码潜艇大战_java游戏之潜艇大战
java游戏之潜艇大战 java 2020-6-15 下载地址 https://www.codedown123.com/25881.html java游戏之潜艇大战 资源下载此资源下载价格为2D币,请 ...
- JAVA 实现《坦克大战》游戏|CSDN创作打卡
前言 小时候大家都玩过坦克大战吧,熟悉的旋律和丰富的关卡陪伴了我们一整个寒暑假,还记得传说中的经典坦克大战 吗?那些怀旧的记忆,伴随着我们一起走过来的经典坦克大战,刚开始那战战兢兢,屡屡被敌人坦克击毁 ...
- 【Java代码实现飞机大战小游戏】简单理解
飞机大战 飞机大战小游戏历经10天完成,主要用到的就是我们面向对象部分的知识:类,封装,继承,多态,静态代码块等等内容+swing部分内容.所以即使你是java小白,也不用担心欧! 游戏说明:游戏有3 ...
- 教你用JAVA设计一个飞机大战的游戏
本次Java课程设计是做一个飞机大战的游戏,应用Swing编程,完成一个界面简洁流畅.游戏方式简单,玩起来易于上手的桌面游戏.该飞机大战项目运用的主要技术即是Swing编程中的一些窗口类库.事件监听以 ...
- 使用《红孩儿工具箱》开发基于Cocos2d-x的《坦克大战》游戏
大家好,我是红孩儿.上一节我们学习了使用<红孩儿工具箱>开发<打地鼠>游戏.这一节我们继续学习使用<红孩儿工具箱>来开发<坦克大战>游戏. <坦克 ...
- java编写家庭收支记录,Java家庭收支记账小项目(java基础)
Java家庭收支记账小项目(java基础) Java家庭收支记账小项目(java基础) 需求说明: 模拟实现基于文本界面的<家庭记账软件>. 该软件能够记录家庭的收入.支出,并能够打印收支 ...
- 潜艇大战java代码_java潜艇大战游戏源码项目
代码如下 package com.util; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimensio ...
最新文章
- 死磕Java并发:J.U.C之Java并发容器:ConcurrentLinkedQueue
- 设备和驱动在第一次加载,会遍历总线
- python和excel的区别-Python与Excel 不得不说的事情
- python requests session刷新_Python Requests Session set-cookie不生效的坑
- C#运算符重载(操作符重载)
- 解决Linux新安装的虚拟机没有网
- 静态构造函数和静态成员变量初始化的调用时间
- 微软取消被指下流的Windows 10更新方法
- iOS警报– UIAlertController
- java工程师容易秃头吗_程序员更容易秃头?原因是什么?
- linux恢复群晖数据,数据丢失的后悔药,群晖NAS备份方案详解
- 在 GitHub 上玩转开源项目的 Code Review
- 使用aria2批量下载微博相册
- jenkins下载插件失败
- 使用PS批量处理图片大小
- jQuery选择器代码详解(一)——Sizzle方法
- 逻辑电路复杂?我们用Logisim一键解决
- iOS 中将数据导出成Excel文件 ---- libxlsxwriter框架
- 神探夏洛克第一季/全集Sherlock1迅雷下载
- T检验、F检验、卡方检验、互信息法及机器学习应用