精华内容
下载资源
问答
  • 经过我长时间整理的 200多个JAVA经典游戏源代码和资源及JAR包及说明 希望大家不要错过!
  • JAVA经典游戏源代码

    2008-11-28 12:24:35
    真正的java游戏源代码,*.java文件,以前下载到的老是jar格式的文件,这里面全是源文件。需要的下载哦!很多经典的游戏。
  • Java实现经典坦克大战及源代码下载

    万次阅读 多人点赞 2017-01-08 11:22:45
    这是一功能相对全的JAVA版坦克大战,界面绘制是通过JAVA的图形化用户界面完成的,包括了菜单界面和游戏界面。其中菜单界面可以供玩家选择重新开始游戏、暂停、继续、是否播放背景音乐、帮助等操作;游戏界面绘制了...

    目录

    一、简单介绍

    二、工程目录

    三、具体代码

    四、运行效果截图

    五、总结

    六、说明与下载


    一、简单介绍

            这是一个功能相对全的Java版坦克大战,界面绘制是通过Java的图形化用户界面swing完成的,包括了菜单界面和游戏界面。其中菜单界面可以供玩家选择重新开始游戏、暂停、继续、是否播放背景音乐、设置游戏难度等操作;游戏界面绘制了坦克、河流、草地、墙壁、鹰碉堡等经典坦克场景,玩家在游戏界面操作自己的坦克开始对战。

             本游戏使用的主要技术有Swing编程、面向对象编程、多线程编程。本想用I/O编程实现保存游戏数据,感觉单机版的没必要就没弄。

    游戏实现的主要功能有:

    1、我方坦克默认可以渡河,碰到墙壁不能走,鹰碉堡被击中游戏结束

    2、坦克可以上下左右、以及左上左下右上右下八个方向移动,移动时添加音效

    3、坦克可以发子弹(可以连发),发射时添加音效

    4、击中对方坦克时,坦克消失,显示爆炸效果;子弹击中墙壁时,子弹消失

    5、我方坦克吃到血块时,生命值加30(可以自己设定);我方被击中时每次血量减50

    6、移动过程中检测碰撞,包括坦克与坦克,坦克与草地、河流、墙壁等

    7、声音处理(开始音乐、背景音乐、移动音效、爆炸音效等)

    8、菜单处理(重新开始、暂停/继续游戏、是否播放背景音乐、设置游戏难度、帮助等)

    9、默认击中一个敌人得100分,达到1500分进入下一关,一共设置了3关

    10、生命数,默认两条命,命数用完游戏结束

    二、工程目录

     

    images文件夹存放草、鹰碉堡和河流图片,墙壁是用画笔画的;audio存放所有音效文件;所有java代码都存放在com.chuenhung.tank包下面。

     

    三、具体代码

    由于篇幅有限,这里只贴出Tank类源代码。Tank类是公用的,通过good变量来区分我方和敌人坦克。

    Tank类源代码:

    package com.chuenhung.tank;
    
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Rectangle;
    import java.awt.event.KeyEvent;
    import java.util.List;
    import java.util.Random;
    /**
     * 
     *@Description 坦克类,包括坦克移动、坦克发射炮弹等
     *@author Chuenhung
     *@email 1271826574@qq.com
     *@date 2017年1月4日
     */
    public class Tank {
    	// 坦克X方向速度,设置游戏难度时可拓展
        public static int XSPEED = 5;
        // 坦克Y方向速度,设置游戏难度时可拓展
    	public static int YSPEED = 5;
    	// 坦克宽度
    	public static final int WIDTH = 30;
    	// 坦克高度
    	public static final int HEIGHT = 30;
    	// 坦克是否活着
    	private boolean live = true;
    	// 坦克的生命值
    	private int life = 100;
    	// 持有对TankClient大管家的引用
    	TankClient tc;
    	// 判断是否是我方坦克,默认true
    	private boolean good=true;
    	// 用于记录坦克原来的坐标,碰到墙、坦克时方便退一步
    	private int oldX,oldY;
    	// 绘制坦克的左上角坐标
    	private int x, y;
    	// 用于产生随机数
    	private static Random r = new Random();
    	// 用于控制敌人随机发出子弹
    	private int step = r.nextInt(30)+10;
    	// 判断是否按下方向键
    	private boolean bL=false, bU=false, bR=false, bD = false;
    	// 枚举类型定义了坦克的八个方向,和静止时的方向
    	enum Direction {L, LU, U, RU, R, RD, D, LD, STOP};
    	// 坦克的方向
    	private Direction dir = Direction.STOP;
    	// 炮筒的方向
    	private Direction ptDir = Direction.D;
        // 血条
    	private BloodBar bar = new BloodBar();
    	// 剩余生命数
    	private int remainLives =2;
    
    	// 构造方法
    	public Tank(int x, int y, boolean good) {
    		this.x = x;
    		this.y = y;
    		this.good = good;
    	}
    
    	// 构造方法
    	public Tank(int x, int y, boolean good, Direction dir,TankClient tc) {
    		this(x, y, good);
    		this.tc = tc;
    		this.oldX=x;
    		this.oldY=y;
    		this.dir=dir;
    	}
    
    	/**
    	 * 
    	 * @Description 画出坦克
    	 * @param g
    	 */
    	public void draw(Graphics g) {
    		if(!live) {
    			if(!good) {
    				tc.tanks.remove(this);
    			}
    			return;
    		}
    		Color c = g.getColor();
    		if(good) g.setColor(Color.RED);
    		else g.setColor(Color.BLUE);
    		g.fillOval(x, y, WIDTH, HEIGHT);
    		g.setColor(c);
    		//血条
    	    if(good) bar.draw(g); 
    		switch(ptDir) {
    		case L:
    			g.drawLine(x + Tank.WIDTH/2, y + Tank.HEIGHT/2, x, y + Tank.HEIGHT/2);
    			break;
    		case LU:
    			g.drawLine(x + Tank.WIDTH/2, y + Tank.HEIGHT/2, x, y);
    			break;
    		case U:
    			g.drawLine(x + Tank.WIDTH/2, y + Tank.HEIGHT/2, x + Tank.WIDTH/2, y);
    			break;
    		case RU:
    			g.drawLine(x + Tank.WIDTH/2, y + Tank.HEIGHT/2, x + Tank.WIDTH, y);
    			break;
    		case R:
    			g.drawLine(x + Tank.WIDTH/2, y + Tank.HEIGHT/2, x + Tank.WIDTH, y + Tank.HEIGHT/2);
    			break;
    		case RD:
    			g.drawLine(x + Tank.WIDTH/2, y + Tank.HEIGHT/2, x + Tank.WIDTH, y + Tank.HEIGHT);
    			break;
    		case D:
    			g.drawLine(x + Tank.WIDTH/2, y + Tank.HEIGHT/2, x + Tank.WIDTH/2, y + Tank.HEIGHT);
    			break;
    		case LD:
    			g.drawLine(x + Tank.WIDTH/2, y + Tank.HEIGHT/2, x, y + Tank.HEIGHT);
    			break;
    		}
    		
    		move();
    	}
    
    	/*
    	 * 坦克移动
    	 */
    	void move() {
    		this.oldX=x;
    		this.oldY=y;
    		switch(dir) {
    		case L:
    			x -= XSPEED;
    			break;
    		case LU:
    			x -= XSPEED;
    			y -= YSPEED;
    			break;
    		case U:
    			y -= YSPEED;
    			break;
    		case RU:
    			x += XSPEED;
    			y -= YSPEED;
    			break;
    		case R:
    			x += XSPEED;
    			break;
    		case RD:
    			x += XSPEED;
    			y += YSPEED;
    			break;
    		case D:
    			y += YSPEED;
    			break;
    		case LD:
    			x -= XSPEED;
    			y += YSPEED;
    			break;
    		case STOP:
    			break;
    		}
    		if(this.dir != Direction.STOP) {
    			this.ptDir = this.dir;
    		}
    		if(!good){
    			Direction[] dirs = Direction.values();
    			if(step==0){
    				step=r.nextInt(30)+10;
    				int rn = r.nextInt(9);
    				this.dir=dirs[rn];
    			}
    			step--;
    			 //敌人发子弹
    			if(r.nextInt(40)>36){
    			   this.fire();
    			}
    		}
    		if(x < 0) x = 0;
    		if(y < 55) y = 55;
    		if(x + Tank.WIDTH > TankClient.GAME_WIDTH) x = TankClient.GAME_WIDTH - Tank.WIDTH;
    		if(y + Tank.HEIGHT > TankClient.GAME_HEIGHT) y = TankClient.GAME_HEIGHT - Tank.HEIGHT;
    	}
    
    	/**
    	 * 
    	 *@Description 用于撞到墙、坦克时返回上一步
    	 */
    	private void stay(){
    		x=oldX;
    		y=oldY;
    	}
    
    	/**
    	 * 
    	 *@Description 按下键时监听
    	 * @param e
    	 */
    	public void keyPressed(KeyEvent e) {
    		int key = e.getKeyCode();
    		switch(key) {
    			case KeyEvent.VK_R:
    				tc.bloods.clear();
    				tc.grasses.clear();
    				tc.rivers.clear();
    				tc.walls.clear();
    				tc.missiles.clear();
    				tc.tanks.clear();
    				tc.explodes.clear();
    
    				//关卡、分数重置
    				tc.score=0;
    				tc.level=1;
    				//草地
    				tc.newGrass();
    				//河流
    				tc.newRiver();
    				//墙
    				tc.newWall();
    				//当在区域中没有坦克时,就出来坦克
    				if (tc.tanks.size() == 0) {
    					tc.newTank();
    				}
    				tc.myTank = new Tank(220, 560, true, Direction.STOP, tc);//设置自己出现的位置
    				if(!tc.home.isLive()){
    					tc.home.setLive(true);
    				}
    				tc.dispose();
    				new TankClient().lauchFrame();
    				break;
    			case KeyEvent.VK_LEFT :
    				bL = true;
    				break;
    			case KeyEvent.VK_UP :
    				bU = true;
    				break;
    			case KeyEvent.VK_RIGHT :
    				bR = true;
    				break;
    			case KeyEvent.VK_DOWN :
    				bD = true;
    				break;
    		}
    		locateDirection();
    	}
    
    	/**
    	 * 
    	 *@Description 定位坦克的方向
    	 */
    	void locateDirection() {
    		if(bL && !bU && !bR && !bD) dir = Direction.L;
    		else if(bL && bU && !bR && !bD) dir = Direction.LU;
    		else if(!bL && bU && !bR && !bD) dir = Direction.U;
    		else if(!bL && bU && bR && !bD) dir = Direction.RU;
    		else if(!bL && !bU && bR && !bD) dir = Direction.R;
    		else if(!bL && !bU && bR && bD) dir = Direction.RD;
    		else if(!bL && !bU && !bR && bD) dir = Direction.D;
    		else if(bL && !bU && !bR && bD) dir = Direction.LD;
    		else if(!bL && !bU && !bR && !bD) dir = Direction.STOP;
    	}
    
        /**
         * 
         * @Description 松开键时监听
         * @param e
         */
    	public void keyReleased(KeyEvent e) {
    		int key = e.getKeyCode();
    		switch(key) {
    			case KeyEvent.VK_J:
    				superFire();
    				break;
    			case KeyEvent.VK_SPACE:
    				fire();
    				//发射炮弹音效
    				new Audio(2);
    				break;
    			case KeyEvent.VK_LEFT :
    				bL = false;
    				new Audio(1);
    				break;
    			case KeyEvent.VK_UP :
    				bU = false;
    				new Audio(1);
    				break;
    			case KeyEvent.VK_RIGHT :
    				bR = false;
    				new Audio(1);
    				break;
    			case KeyEvent.VK_DOWN :
    				bD = false;
    				new Audio(1);
    				break;
    		}
    		locateDirection();		
    	}
    
    	/**
    	 * 
    	 * @Description 坦克开火
    	 * @return 炮弹对象
    	 */
    	public Missile fire() {
    		if(!live)return null;
    		int x = this.x + Tank.WIDTH/2 - Missile.WIDTH/2;
    		int y = this.y + Tank.HEIGHT/2 - Missile.HEIGHT/2;
    		Missile m = new Missile(x, y, ptDir,this.good, this.tc);
    		tc.missiles.add(m);
    		return m;
    	}
    
    	/**
    	 * 
    	 * @Description 坦克根据方向开火
    	 * @return 炮弹对象
    	 */
    	public Missile fire(Direction dir) {
    		if(!live)return null;
    		int x = this.x + Tank.WIDTH/2 - Missile.WIDTH/2;
    		int y = this.y + Tank.HEIGHT/2 - Missile.HEIGHT/2;
    		Missile m = new Missile(x, y, dir,this.good, this.tc);
    		tc.missiles.add(m);
    		return m;
    	}
    
    	/**
    	 * 
    	 * @Description 超级炮弹,可以向八个方向开火
    	 */
    	public void superFire(){
    		Direction[] dirs = Direction.values();
    		for(int i=0;i<8;i++){
    			fire(dirs[i]);
    		}
    	}
    
    	/**
    	 * 
    	 * @Description 判断坦克是否撞墙
    	 * @param w 墙对象
    	 * @return 是否撞墙了
    	 */
    	public boolean CollidesWithWall(Wall w){
    		if(this.live&&this.getRect().intersects(w.getRect())){
    			this.stay();
    			return true;
    		}
    		return false;
    	}
    
    	public boolean CollidesWithWalls(List<Wall> walls){
            for(int i=0;i<walls.size();i++){
            	Wall w = walls.get(i);
            	if(this.live&&this.getRect().intersects(w.getRect())){
            	    this.stay();
            		return true;
            	}
            }
    		return false;
    	}
    
    	/**
    	 * 
    	 * @Description 判断坦克是否相撞
    	 * @param tanks 多辆坦克
    	 * @return 是否和坦克相撞了
    	 */
    	public boolean collidesWithTanks(List<Tank> tanks){
    		for(int i=0;i<tanks.size();i++){
    			Tank t = tanks.get(i);
    			if(this!=t){
    				if(this.live&&t.isLive()&&this.getRect().intersects(t.getRect())){
    					this.stay();
    					t.stay();
    					return true;
    				}
    			}
    		}
    		return false;
    	}
    
    	/**
    	 * 
    	 * @Description 坦克是否碰到了鹰碉堡
    	 * @param h 鹰碉堡对象
    	 * @return 是否碰到了鹰碉堡
    	 */
    	public boolean CollidesWithHome(Home h){
    		if(this.live&&h.isLive()&&this.getRect().intersects(h.getRect())){
    			this.stay();
    			return true;
    		}
    		return false;
    	}
    
    	/**
    	 * 
    	 * @Description 坦克是否碰到了河流,主要是地方坦克调用,我方坦克能直接渡河
    	 * @param r 河流对象
    	 * @return 是否碰到了河流
    	 */
    	public boolean CollidesWithRiver(River r){
    		if(this.live&&this.getRect().intersects(r.getRect())){
    			this.stay();
    			return true;
    		}
    		return false;
    	}
    
    	/**
    	 * 
    	 *@Description 坦克是否碰到了河流,主要是地方坦克调用,我方坦克能直接渡河
    	 * @param rivers 河流集合
    	 * @return 是否碰到了河流
    	 */
    	public boolean CollidesWithRivers(List<River> rivers){
    		for(int i=0;i<rivers.size();i++){
    			River t = rivers.get(i);
    			if(this.live&&this.getRect().intersects(t.getRect())){
    				this.stay();
    				return true;
    			}
    		}
    		return false;
    	}
    
    	public Rectangle getRect() {
    		return new Rectangle(x, y, WIDTH, HEIGHT);
    	}
    
        /**
         * 
         *@Description 我方坦克的血条,用于显示我方坦克的生命值
         *@author xiaoli
         *@date2017年1月4日
         */
    	private class BloodBar{
    		public void draw(Graphics g){
    			Color c = g.getColor();
    			g.setColor(Color.PINK);
    			g.drawRect(x,y-10,WIDTH,8);
    			//里面的
    			g.setColor(Color.PINK);
    			int w =WIDTH*life/100;
    			g.fillRect(x, y-10, w, 8);
    			g.setColor(c);
    		}
    	}
    
    	/**
    	 * 
    	 *@Description 吃血块,主要是我方坦克调用
    	 * @param b 血块对象
    	 * @return 是否吃到了血块
    	 */
    	public boolean eat(Blood b){
    		if(this.live&&b.isLive()&&this.getRect().intersects(b.getRect())){
    			this.life= life + 30;
    			b.setLive(false);
    			tc.bloods.remove(b);
    			//吃血块音效
    			new Audio(4);
    			return true;
    		}
    		return false;
    	}
    
    	public boolean isLive() {
    		return live;
    	}
    
    	public void setLive(boolean live) {
    		this.live = live;
    	}
    
    	public int getLife() {
    		return life;
    	}
    
    	public void setLife(int life) {
    		this.life = life;
    	}
    
    	public boolean isGood() {
    		return good;
    	}
    
    	public int getRemainLives() {
    		return remainLives;
    	}
    
    	public void setRemainLives(int remainLives) {
    		this.remainLives = remainLives;
    	}
    }
    

     

    四、运行效果截图

    重新开始、暂停、继续、发射子弹、爆炸效果演示:

    渡河、吃血块功能演示:



     

     

     

    五、总结

    源代码参考了马老师的Java坦克大战视频教程以及众多互联网资源,这次练手有利于深入理解Java面向对象编程、Swing界面编程以及多线程编程

    大部分功能是本人在实训期间完成(2016.12.30),当时有兴趣想巩固一下Java知识就开始做了
    这个坦克大战到这里就告一个段落,时间荏苒,马上就要毕业了,要学的东西很多的,希望以后能够做出更加优秀的作品。
    该程序谨供参考,不得用于商业用途,希望大神能提出更多优化的建议,一起交流。
    若有关内容侵犯了您的权益请及时联系作者删除,作者邮箱1271826574@qq.com

    更新于2021/06/04

    六、说明与下载

    下载地址

     

     

    展开全文
  • 其中包括一套Java源代码文件,该源代码文件深受经典游戏启发。 游戏是9 x 9的网格,包含5种不同颜色的球。 5或更相同颜色的球的水平,垂直或对角线对齐导致它们消失,并且用户的得分增加。 每次移动后,会随机...
  • 贪吃蛇Java源代码

    2018-12-19 20:37:57
    作为以前诺基亚手机上的经典游戏,贪吃蛇和俄罗斯方块一样,都曾经在我们的童年给我们带来了很乐趣。世间万物斗转星移,诺基亚曾经作为手机业的龙头老大,现如今也一步步走向衰落,被收购,再过不久估计就要退出...
  • Java吃豆子游戏源代码 6目标文件 内容索引:JAVA源码,游戏娱乐,JAVA游戏源码 JAVA编写的吃豆子游戏,类似疯狂坦克一样,至少界面有点像。大家可以看截图。 Java从网络取得文件 1目标文件 简单 Java从压缩包中...
  • 400多个类的最优秀的面向对象代码,并优雅地使用了各种设计模式。 在制作此游戏时没有使用任何库。 该版本是从2010年至2015年使用Java 1.6编写的。 它是Java,面向对象的程序设计和基于2D切片的游戏编程的重要资源。...
  • Java SE实践教程 源代码 2010-9-13 声明:在网上找了好久才找到这源码,真不容易啊,请大家多多支持。 2010-9-13 内容简介:此书结合具体实例讲解,通俗易懂,又不乏深度。我觉得这本书写的确实不错,堪称经典,...
  • Java经典入门教程pdf完整版Java私塾跟我学系列JAⅥ篇网址:htp:/www.lavass.Cn电话:010-86835215 3;Java是一种软件运行平台 3.1:什么是软件的运行平台 如同我们需要阳光、空气、水和食物才能正常存活一样,软件最终要...
  • 坦克大战中有我方坦克和敌方坦克,我方坦克有一个,敌方坦克有多个。坦克可以移动,也可以发射子弹。我方坦克可以通过上下左右键来控制方向,敌方坦克自动改变方向。在游戏窗体中有障碍物,包括砖墙、钢墙、水墙和...

     坦克大战

    一、需求分析

    坦克大战中有我方坦克和敌方坦克,我方坦克有一个,敌方坦克有多个。坦克可以移动,也可以发射子弹。我方坦克可以通过上下左右键来控制方向,敌方坦克自动改变方向。在游戏窗体中有障碍物,包括砖墙、钢墙、水墙和草地。坦克可以穿过草地,在遇到其他障碍物时,我方坦克停止移动,并通过操纵改变方向再移动,敌方坦克遇到其他障碍物时可以自动的改变方向。我方坦克有三次生命值,当与敌方坦克或敌方子弹相撞时,生命值减- -, 当生命值是零时,敌方胜利,游戏结束。敌方坦克的生命值为-一,当敌方坦克与我方坦克或者我方子弹相遇就消失,同时我方子弹也消失,并产生爆炸。当我方坦克把敌方坦克消灭完后,我方胜利,游戏结束。敌方子弹或我方子弹击中老巢,游戏结束。

    二、程序设计

    采用面向对象的设计方法,项目中有以下类:

    主窗体: GameForm, 游戏的主窗体。

    坦克:父类坦克(Tank)、 我方坦克(MyTank)、 敌方坦克( EnemyTank)。

    墙:父类墙(Wall)、砖墙(BrickWall)、刚墙( SteelWall)、水墙( WaterWall)、

    草地(MeadoeWall)。

    子弹:父类子弹(Bullet)、 我方子弹(MyBullet)、敌方坦克(EnemyBullet)。

    老巢: Home

    火花: Spark, 子弹与墙碰撞产生火花。

    爆炸: Blast, 子弹与坦克和老巢碰撞产生爆炸。

     

    注:小编整理的Java坦克大战项目视频和pdf文档,大家需要的话就可以一键三连 并评论 关注小编☛☛☛☛点击此处PDF原件下载

    二·项目git

    1.项目git提交记录截图

    三·项目功能架构图与主要功能流程图

    1.项目功能架构图

    2.功能流程图

     

    3.面向对象类设计图

    Wall:

     

     Visible:

     乖乖献上了类图:

     四·项目运行截图和屏幕录制

    演示:

     

    双人游戏和界面地图的设计是我们这个课设的特点:

     

    1.游戏面板:绘制游戏界面,将所有游戏元素展现出来

    2.显示关卡面板(第几关开始提示):登录面板和游戏面板的过渡界面,只有一个闪烁的动画效果

    3.主窗体:整个面板最外层载体,一个800*600的窗体

    4.登录面板:选择游戏模式是单人还是双人

    五·项目关键代码

    代码太多,主要列出了主要的类以及特色的功能代码,耐心看看,O(∩_∩)O哈哈~

     

    注:小编整理的Java坦克大战项目视频和pdf文档,大家需要的话就可以一键三连 并评论 关注小编☛☛☛☛点击此处PDF原件下载

    视频教程:

    你敢信?清华毕业大佬用了一个坦克大战项目就讲完了23种设计模式

    你敢信?清华毕业大佬用了一个坦克大战项目就讲完了23种设计模式

    你敢信?清华毕业大佬用了一个坦克大战项目就讲完了23种设计模式

    你敢信?清华毕业大佬用了一个坦克大战项目就讲完了23种设计模式

    你敢信?清华毕业大佬用了一个坦克大战项目就讲完了23种设计模式

    你敢信?清华毕业大佬用了一个坦克大战项目就讲完了23种设计模式

    你敢信?清华毕业大佬用了一个坦克大战项目就讲完了23种设计模式

    你敢信?清华毕业大佬用了一个坦克大战项目就讲完了23种设计模式

    你敢信?清华毕业大佬用了一个坦克大战项目就讲完了23种设计模式

    你敢信?清华毕业大佬用了一个坦克大战项目就讲完了23种设计模式

    你敢信?清华毕业大佬用了一个坦克大战项目就讲完了23种设计模式

    你敢信?清华毕业大佬用了一个坦克大战项目就讲完了23种设计模式

    你敢信?清华毕业大佬用了一个坦克大战项目就讲完了23种设计模式

    你敢信?清华毕业大佬用了一个坦克大战项目就讲完了23种设计模式

    你敢信?清华毕业大佬用了一个坦克大战项目就讲完了23种设计模式

    你敢信?清华毕业大佬用了一个坦克大战项目就讲完了23种设计模式

    你敢信?清华毕业大佬用了一个坦克大战项目就讲完了23种设计模式

    你敢信?清华毕业大佬用了一个坦克大战项目就讲完了23种设计模式

    你敢信?清华毕业大佬用了一个坦克大战项目就讲完了23种设计模式

    由于内容实在是太多了,小编就不多做介绍了,这个是小编整理的Java坦克大战项目视频和pdf文档,大家需要的话就可以一键三连 并评论 关注小编☛☛☛☛点击此处PDF原件下载

    你敢信?清华毕业大佬用了一个坦克大战项目就讲完了23种设计模式

    你敢信?清华毕业大佬用了一个坦克大战项目就讲完了23种设计模式

    23种设计模式

    目录 创建型 

    1. Factory Method(工厂方法)

     2. Abstract Factory(抽象工厂)

     3. Builder(建造者)

     4. Prototype(原型)

     5. Singleton(单例) 结构型 

    6. Adapter Class/Object(适配器)

     7. Bridge(桥接) 

    8. Composite(组合) 

    9. Decorator(装饰) 

    10. Facade(外观) 

    11. Flyweight(享元)

     12. Proxy(代理) 行为型 

    13. Interpreter(解释器) 

    14. Template Method(模板方法) 

    15. Chain of Responsibility(责任链)

     16. Command(命令)

     17. Iterator(迭代器) 

    18. Mediator(中介者)

     19. Memento(备忘录)

     20. Observer(观察者)

     21. State(状态)

     22. Strategy(策略) 

    23. Visitor(访问者)

    下面的是23种设计模式的文档和视频,这个是小编整理的Java坦克大战项目视频和pdf文档,大家需要的话就可以一键三连 并评论 关注小编☛☛☛☛点击此处PDF原件下载

    你敢信?清华毕业大佬用了一个坦克大战项目就讲完了23种设计模式

     

    你敢信?清华毕业大佬用了一个坦克大战项目就讲完了23种设计模式

     

    你敢信?清华毕业大佬用了一个坦克大战项目就讲完了23种设计模式

    在Java开发中,坦克大战项目和23种设计模式无疑是经典中的经典,就算是开发5年甚至是10年以上的开发者,都不敢说自己真真实实掌握了23种设计模式,希望大家能够好好学习,并且能够掌握这些细节性的东西。

    展开全文
  • 经典游戏一样......通过这种旋转:每人都会跳到同一级别,扮演反对者的角色,并尝试互相射击。 这些是我想尝试的东西...... MelonJS - 浏览器游戏框架(两赞) Spring 5 和 Pivotal Reactor - 处理客户端连接的...
  • 部分vc源代码合集1.rar

    2012-06-11 11:20:01
    2012-06-11 10:15 99,780 C++“超级玛丽”游戏源代码.rar 2012-06-11 10:03 27,136 c++编写的增删改查.doc 2012-06-11 09:53 0 cpa自动注册工具源码.zip 2012-06-11 10:04 61,440 C_调用Win32_的API函数.doc 2012-...
  • 分享一款牛人用java写的经典游戏,目录结构如下: 虽然只能算一Demo,但是用到了很多Java基础技术和算法:Java2D,双缓冲,A星寻路,粒子系统,动画效果,处理图片,Swing ui ,UDP,TCP/Socket.另外这...

    分享一款牛人用java写的经典游戏,目录结构如下:

     

     

     

     

    虽然只能算一个Demo,但是用到了很多Java基础技术和算法: 

    Java2D,双缓冲,A星寻路,粒子系统,动画效果,处理图片,Swing ui ,UDP,TCP/Socket. 

    另外这个程序也可以看出jre1.5和jre1.6之前的性能差别。(jre1.5下面运行很卡

    (源代码在awt.rar中)。 

    暂时支持采矿,攻击,寻路,局域网对战. 

     

    两张效果图:



    下载页面:java版星际游戏

    注:不要忘了导入jstarcaft.jar这个jar包

    (IT学习者:http://itxxz.com

     

    转载于:https://www.cnblogs.com/superli0426/p/3785592.html

    展开全文
  • Eclipse是一基于java的开放源代码的可扩展开发平台,是知名的跨平台的自由集成开发环境(IDE)Eclipse是一基于,还捎带了一标准规范的插件集,包含了Java开发工具(JDK),Eclipse因为安装不同的插件,所以它...
  • 处理是为电子艺术,新媒体艺术和视觉设计社区构建的一种开放源代码编程语言和集成开发环境(IDE)。 该语言建立在Java语言的基础上,但是使用了简化的语法和图形编程模型。 由于可以将处理导出到Android或iOS项目。...
  • 7个经典Android应用程序实例源代码.rar Android 培训示例大全--18单项功能实例源码.rar Android 小项目开发示例大全--20通用具体应用程序实例源码.rar Android 文件下载功能Java多线程下载功能的例子实例源码....
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
    Java吃豆子游戏源代码 6目标文件 内容索引:JAVA源码,游戏娱乐,JAVA游戏源码  JAVA编写的吃豆子游戏,类似疯狂坦克一样,至少界面有点像。大家可以看截图。 Java从网络取得文件 1目标文件 简单 Java从压缩包中...
  • 关于JPlatformer ... 但是,在收到一些非常积极的反馈和源代码请求后,我决定将JPlatformer作为开源软件发布。 该存储库是运行和修改JPlatformer所需的全部。 请随时为项目做贡献和扩展。 仍有大量的改
  • java开源包1

    千次下载 热门讨论 2013-06-28 09:14:34
    Java Remote Desktop 是一个Java 的远程桌面软件,支持很特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...
  • java开源包12

    热门讨论 2013-06-28 10:14:45
    Java Remote Desktop 是一个Java 的远程桌面软件,支持很特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...
  • Java资源包01

    2016-08-31 09:16:25
    Java Remote Desktop 是一个Java 的远程桌面软件,支持很特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...
  • java开源包101

    2016-07-13 10:11:08
    Java Remote Desktop 是一个Java 的远程桌面软件,支持很特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...
  • java开源包11

    热门讨论 2013-06-28 10:10:38
    Java Remote Desktop 是一个Java 的远程桌面软件,支持很特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...
  • java开源包2

    热门讨论 2013-06-28 09:17:39
    Java Remote Desktop 是一个Java 的远程桌面软件,支持很特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...
  • java开源包3

    热门讨论 2013-06-28 09:20:52
    Java Remote Desktop 是一个Java 的远程桌面软件,支持很特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...
  • java开源包6

    热门讨论 2013-06-28 09:48:32
    Java Remote Desktop 是一个Java 的远程桌面软件,支持很特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...
  • java开源包5

    热门讨论 2013-06-28 09:38:46
    Java Remote Desktop 是一个Java 的远程桌面软件,支持很特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...
  • java开源包10

    热门讨论 2013-06-28 10:06:40
    Java Remote Desktop 是一个Java 的远程桌面软件,支持很特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

空空如也

空空如也

1 2 3 4
收藏数 63
精华内容 25
关键字:

多个java经典游戏源代码

java 订阅