首页 > 开发 > Java > 正文

Java实现飞机大战-连接数据库并把得分写入数据库

2024-07-14 08:41:36
字体:
来源:转载
供稿:网友

编写飞行物类

package com.tarena.shoot; import java.awt.image.BufferedImage; /** * 飞行物(敌机,蜜蜂,子弹,英雄机) */public abstract class FlyingObject {	protected int x;	protected int y;	protected int width; 	protected int height;	protected BufferedImage image;	protected BufferedImage[] ember; 	public int getX() {		return x;	} 	public void setX(int x) {		this.x = x;	} 	public int getY() {		return y;	} 	public void setY(int y) {		this.y = y;	} 	public int getWidth() {		return width;	} 	public void setWidth(int width) {		this.width = width;	} 	public int getHeight() {		return height;	} 	public void setHeight(int height) {		this.height = height;	} 		public BufferedImage getImage() {		return image;	} 	public void setImage(BufferedImage image) {		this.image = image;	} 	/**	 * 检查是否出界	 * @param width 边界宽	 * @param height 边界高	 * @return true 出界与否	 */	public abstract boolean outOfBounds();		/**	 * 飞行物移动一步	 */	public abstract void step();		/**	 * 检查当前飞行物体是否被子弹(x,y)击(shoot)中,	 * true表示击中,飞行物可以被击中	 * @param Bullet 子弹对象	 * @return true表示被击中了	 */	public boolean shootBy(Bullet bullet){		if(bullet.isBomb()){			return false;		}		int x = bullet.x; //子弹横坐标		int y = bullet.y; //子弹纵坐标		boolean shoot = this.x<x && x<this.x+width && this.y<y && y<this.y+height;		if(shoot){			bullet.setBomb(true);		}		return shoot;	} }

编写飞机类

package com.tarena.shoot;   /** * 敌飞机: 是飞行物,也是敌人 */public class Airplane extends FlyingObject implements Enemy { 	int speed = 2; //移动步骤		public Airplane(){		this.image = ShootGame.airplane;		this.ember = ShootGame.airplaneEmber;		width = image.getWidth();		height = image.getHeight();		y = -height;   		x = (int)(Math.random()*(ShootGame.WIDTH - width));	} 		@Override	public int getScore() { //获取分数		return 5;	} 	@Override	public 	boolean outOfBounds() { //越界处理		return y>ShootGame.HEIGHT;	} 	@Override	public void step() { //移动		y += speed;	} } 

编写奖励接口

package com.tarena.shoot;/** * 奖励 */public interface Award {	int DOUBLE_FIRE = 0; //双倍火力	int LIFE = 1;  //1条命	/** 获得奖励类型(上面的0或1) */	int getType();}

编写蜜蜂类

package com.tarena.shoot; import java.util.Random; public class Bee extends FlyingObject implements Award{	private int xSpeed = 1;	private int ySpeed = 2;	private int awardType;		public Bee(){		this.image = ShootGame.bee;		this.ember = ShootGame.beeEmber;		width = image.getWidth();		height = image.getHeight();		y = -height;		Random rand = new Random();		x = rand.nextInt(ShootGame.WIDTH - width);		awardType = rand.nextInt(2);  //初始化时给奖励	}		public int getType(){		return awardType;	} 	@Override	public boolean outOfBounds() {		return y>ShootGame.HEIGHT;	} 	@Override	public void step() {   //可斜飞		x += xSpeed;		y += ySpeed;		if(x > ShootGame.WIDTH-width){			xSpeed = -1;		}		if(x < 0){			xSpeed = 1;		}	}}

编写大飞机类

package com.tarena.shoot; import java.util.Random; public class BigPlane extends FlyingObject 	implements Enemy, Award{	private int xSpeed=1;	private int ySpeed=1;		private int life;	private int awardType; 	public BigPlane() {		life = 4;		this.image = ShootGame.bigPlane;		this.ember = ShootGame.bigPlaneEmber;		width = image.getWidth();		height = image.getHeight();		y = -height;    		Random rand = new Random();		x = rand.nextInt(ShootGame.WIDTH - width);		awardType = rand.nextInt(2);	}		public int getType() {		return awardType;	} 	@Override	public int getScore() {		return 50;	} 	@Override	public boolean outOfBounds() {		return false;	} 	//	@Override//	public BufferedImage getImage() {//		Graphics g = image.getGraphics();//		g.setColor(Color.white);//		g.fillRect(0, 0, 40, 30);//		g.setColor(Color.black);//		g.drawString("L:"+life, 10, 20);//		return image;//	}		public EnemyBullet[] shoot() { // 发射子弹		int xStep = width / 4; // 子弹步分为飞机宽度4半		int yStep = 20;		EnemyBullet[] bullets2 = new EnemyBullet[1];		bullets2[0] = new EnemyBullet(x + 2 * xStep, y - yStep); 		return bullets2;		}		@Override	public void step() {  //移动		x += xSpeed;		y += ySpeed;		if(x > ShootGame.WIDTH-width){			xSpeed = -1;		}		if(x < 0){			xSpeed = 1;		}	}		public boolean shootBy(Bullet bullet) {		if(super.shootBy(bullet)){			life--;		}		return life==0;	}}

编写子弹类

package com.tarena.shoot;  /** * 子弹类 */public class Bullet extends FlyingObject {	private int speed = 3; //移动的速度	private boolean bomb;	public Bullet(int x,int y){		this.x = x;		this.y = y;		this.image = ShootGame.bullet;	}		public void setBomb(boolean bomb) {		this.bomb = bomb;	}		public boolean isBomb() {		return bomb;	} 	@Override	public void step(){  //移动方法		y-=speed;	} 	@Override	public boolean outOfBounds() {		return y<-height;	} }

编写飞机爆炸效果

package com.tarena.shoot; import java.awt.image.BufferedImage; /** * 灰烬 飞机被打掉以后的残影 * @author Robin */public class Ember {	private BufferedImage[] images={};	private int index;	private int i;	private BufferedImage image;	private int intevel = 10;	private int x,y;	public Ember(FlyingObject object) {		images = object.ember;		image = object.image;		x = object.x;		y = object.y;		index = 0;		i = 0;	}		public boolean burnDown(){		i++;		if(i%intevel==0){			if(index == images.length){				return true;			}			image = images[index++];		}		return false;	}	public int getX() {		return x;	}	public int getY() {		return y;	}	public BufferedImage getImage() {		return image;	}}

编写敌人类

package com.tarena.shoot; /** * 敌人,可以有分数 */public interface Enemy {	//敌人的分数	int getScore();}

编写敌机子弹类

package com.tarena.shoot; public class EnemyBullet extends FlyingObject {	private int speed = 2; //移动的速度	private boolean bomb;		public EnemyBullet(int x,int y){		this.x = x;		this.y = y;		this.image = ShootGame.EnemyBullet;	}		public void setBomb(boolean bomb) {		this.bomb = bomb;	}		public boolean isBomb() {		return bomb;	} 	@Override	public void step(){  //移动方法		y+=speed;	} 	@Override	public boolean outOfBounds() {		return y<-height;	} }  

编写英雄机类

package com.tarena.shoot; import java.awt.image.BufferedImage;  /** * 英雄机 *  * @author Administrator *  */public class Hero extends FlyingObject {		protected BufferedImage[] images = {};	protected int index = 0; 	//private boolean doubleFire;	private int doubleFire;	private int life; 	public Hero() {		life = 3;		doubleFire = 0;		this.image = ShootGame.hero0;		this.ember = ShootGame.heroEmber;		images = new BufferedImage[]{ShootGame.hero0, ShootGame.hero1};		width = image.getWidth();		height = image.getHeight();		x = 150;		y = 400;	} 	public int isDoubleFire() {		return doubleFire;	} 	public void addDoubleFire(){		doubleFire = 40;	}		public void setDoubleFire(int doubleFire) {		this.doubleFire = doubleFire;	} 	public void addLife() { // 增命		life++;	} 	public void subtractLife() { // 减命		life--;	} 	public int getLife() {		return life;	} 	/**	 * 当前物体移动了一下,相对距离, x,y鼠标位置	 */	public void moveTo(int x, int y) {		this.x = x - width / 2;		this.y = y - height / 2;	} 	@Override	public boolean outOfBounds() {		return x < 0 || x > ShootGame.WIDTH - width || y < 0				|| y > ShootGame.HEIGHT - height;	} 	public Bullet[] shoot() { // 发射子弹		int xStep = width / 4; // 子弹步分为飞机宽度4半		int yStep = 20;		if (doubleFire>0) {			Bullet[] bullets = new Bullet[2];			bullets[0] = new Bullet(x + xStep, y - yStep);			bullets[1] = new Bullet(x + 3 * xStep, y - yStep);			doubleFire -= 2;			return bullets;		} else { // 单倍			Bullet[] bullets = new Bullet[1];			bullets[0] = new Bullet(x + 2 * xStep, y - yStep); // y-yStep(子弹距飞机的位置)			return bullets;		}	} 	@Override	public void step() {		if(images.length>0){			image = images[index++/10%images.length];		}	} 	public boolean hit(FlyingObject other) { // 碰撞算法 		int x1 = other.x - this.width / 2;		int x2 = other.x + other.width + this.width / 2;		int y1 = other.y - this.height / 2;		int y2 = other.y + other.height + this.height / 2;		return this.x + this.width / 2 > x1 && this.x + this.width / 2 < x2				&& this.y + this.height / 2 > y1				&& this.y + this.width / 2 < y2;	} 	public boolean hit2(EnemyBullet bb1) {		int x1 = bb1.x - this.width / 2;		int x2 = bb1.x + bb1.width + this.width / 2;		int y1 = bb1.y - this.height / 2;		int y2 = bb1.y + bb1.height + this.height / 2;		int hx = this.x + this.width / 2;		int hy = this.y + this.height / 2;		return hx > x1 && hx < x2 && hy > y1 && hy < y2; 	}}

编写bgm类

package com.tarena.shoot; import java.applet.Applet;import java.applet.AudioClip;import java.io.File;import java.net.URI;import java.net.URL;import javax.swing.JFrame;public class Sound extends JFrame{ File f; URI uri;  URL url;   Sound(){  try {      f = new File("C://Users//姜涛//Desktop//dddd//StudioEIM - MapleStory.wav");    uri = f.toURI();   url = uri.toURL(); //解析地址   AudioClip aau;    aau = Applet.newAudioClip(url);   aau.loop(); //循环播放 } catch (Exception e)  { e.printStackTrace(); } }}

编写主类

package com.tarena.shoot; import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.image.BufferedImage;import java.util.Arrays;import java.util.Random;import java.util.Timer;import java.util.TimerTask; import javax.imageio.ImageIO;import javax.swing.ImageIcon;import javax.swing.JFrame;import javax.swing.JPanel; import DAO.DAO; public class ShootGame extends JPanel {	public static final int WIDTH = 400; // 面板宽	public static final int HEIGHT = 654; // 面板高	/** 游戏的当前状态: START RUNNING PAUSE GAME_OVER */	private int state;	public static final int START = 0;	public static final int RUNNING = 1;	public static final int PAUSE = 2;	public static final int GAME_OVER = 3;  	private int score = 0; // 得分	private Timer timer; // 定时器	private int intervel = 1000/100; // 时间间隔(毫秒)		public static BufferedImage background;	public static BufferedImage start;	public static BufferedImage pause;	public static BufferedImage gameover;	public static BufferedImage bullet;	public static BufferedImage airplane;	public static BufferedImage EnemyBullet;	public static BufferedImage[] airplaneEmber=new BufferedImage[4];	public static BufferedImage bee;	public static BufferedImage[] beeEmber=new BufferedImage[4];;	public static BufferedImage hero0;	public static BufferedImage hero1;	public static BufferedImage[] heroEmber=new BufferedImage[4];;	public static BufferedImage bigPlane;	public static BufferedImage[] bigPlaneEmber=new BufferedImage[4];; 	private FlyingObject[] flyings = {}; // 敌机数组	private Bullet[] bullets = {}; // 子弹数组	private EnemyBullet[] bullets2 = {};//敌机子弹数组	private Hero hero = new Hero(); // 英雄机	private Ember[] embers = {}; // 灰烬	private BigPlane bigplane=new BigPlane(); 	static {// 静态代码块		try {			background = ImageIO.read(ShootGame.class					.getResource("background.png"));			bigPlane = ImageIO					.read(ShootGame.class.getResource("bigplane.png"));			airplane = ImageIO					.read(ShootGame.class.getResource("airplane.png"));			bee = ImageIO.read(ShootGame.class.getResource("bee.png"));			bullet = ImageIO.read(ShootGame.class.getResource("bullet.png"));			hero0 = ImageIO.read(ShootGame.class.getResource("hero0.png"));			hero1 = ImageIO.read(ShootGame.class.getResource("hero1.png"));			pause = ImageIO.read(ShootGame.class.getResource("pause.png"));			EnemyBullet= ImageIO.read(ShootGame.class.getResource("EnemyBullet.png"));			gameover = ImageIO					.read(ShootGame.class.getResource("gameover.png"));			start = ImageIO					.read(ShootGame.class.getResource("start.png"));			for(int i=0; i<4; i++){				beeEmber[i] = ImageIO.read(						ShootGame.class.getResource("bee_ember"+i+".png"));				airplaneEmber[i] = ImageIO.read(						ShootGame.class.getResource("airplane_ember"+i+".png"));				bigPlaneEmber[i] = ImageIO.read(						ShootGame.class.getResource("bigplane_ember"+i+".png"));				heroEmber[i] = ImageIO.read(						ShootGame.class.getResource("hero_ember"+i+".png"));			}		} catch (Exception e) {			e.printStackTrace();		}	} 	@Override	public void paint(Graphics g) {		g.drawImage(background, 0, 0, null); // 画背景图		paintEmber(g);		paintHero(g); // 画英雄机		paintBullets(g); // 画子弹		paintFlyingObjects(g); // 画飞行物		paintScore(g); // 画分数		paintState(g); // 画游戏状态		paintEnemyBullets(g);//画敌机子弹	} 	/** 画英雄机 */	public void paintHero(Graphics g) {		g.drawImage(hero.getImage(), hero.getX(), hero.getY(), null);	}		public void paintEmber(Graphics g) {		for (int i = 0; i < embers.length; i++) {			Ember e = embers[i];			g.drawImage(e.getImage(), e.getX(), e.getY(), null);		}	} 	/** 画子弹 */	public void paintBullets(Graphics g) {		for (int i = 0; i < bullets.length; i++) {			Bullet b = bullets[i];			if(! b.isBomb())				g.drawImage(b.getImage(), b.getX() - b.getWidth() / 2, b.getY(),					null);		}							}	public void paintEnemyBullets(Graphics g) {		for(int i=0;i<bullets2.length;i++) {			EnemyBullet e=bullets2[i];			if(! e.isBomb()) {				g.drawImage(e.getImage(),e.getX() - e.getWidth() / 2, e.getY(),null);			}		}			} 	/** 画飞行物 */	public void paintFlyingObjects(Graphics g) {		for (int i = 0; i < flyings.length; i++) {			FlyingObject f = flyings[i];			g.drawImage(f.getImage(), f.getX(), f.getY(), null);		}	} 	/** 画分数 */	public void paintScore(Graphics g) {		int x = 10;		int y = 25;		Font font = new Font(Font.SANS_SERIF,Font.BOLD, 14);		g.setColor(new Color(0xFFFFFF));		g.setFont(font); // 设置字体		g.drawString("SCORE:" + score, x, y); // 画分数		y+=20;		g.drawString("LIFE:" + hero.getLife(), x, y);	} 	/** 画游戏状态 */	public void paintState(Graphics g) {		switch (state) {		case START:			g.drawImage(start, 0, 0, null);			break;		case PAUSE:			g.drawImage(pause, 0, 0, null);			break;		case GAME_OVER:			g.drawImage(gameover, 0, 0, null);			break;		}	} 	public static void main(String[] args) {		new Sound();		JFrame frame = new JFrame("Shoot Game");		ShootGame game = new ShootGame(); // 面板对象		frame.add(game); // 将面板添加到JFrame中		frame.setSize(WIDTH, HEIGHT); // 大小		frame.setAlwaysOnTop(true); // 其总在最上		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 默认关闭操作		frame.setIconImage(new ImageIcon("images/icon.jpg").getImage()); // 设置窗体的图标		frame.setLocationRelativeTo(null); // 设置窗体初始位置		frame.setVisible(true); // 尽快调用paint 		game.action(); // 启动执行	} 	public void action() { // 启动执行代码		// 鼠标监听事件		MouseAdapter l = new MouseAdapter() {			@Override			public void mouseMoved(MouseEvent e) { // 鼠标移动				if (state == RUNNING) { // 运行时移动英雄机					int x = e.getX();					int y = e.getY();					hero.moveTo(x, y);				}			} 			@Override			public void mouseEntered(MouseEvent e) { // 鼠标进入				if (state == PAUSE) { // 暂停时运行					state = RUNNING;				}			} 			@Override			public void mouseExited(MouseEvent e) { // 鼠标退出				if (state != GAME_OVER) {					state = PAUSE; // 游戏未结束,则设置其为暂停				}			} 			@Override			public void mouseClicked(MouseEvent e) { // 鼠标点击				switch (state) {				case START:					state = RUNNING;					break;				case GAME_OVER: // 游戏结束,清理现场					flyings = new FlyingObject[0];					bullets = new Bullet[0];					hero = new Hero();					score = 0;					state = START;					break;				}			}		};		this.addMouseListener(l); // 处理鼠标点击操作		this.addMouseMotionListener(l); // 处理鼠标滑动操作 		timer = new Timer(); // 主流程控制		timer.schedule(new TimerTask() {			@Override			public void run() {				if (state == RUNNING) {					enterAction(); // 飞行物入场					stepAction(); // 走一步					shootAction(); // 射击					bangAction(); // 子弹打飞行物					outOfBoundsAction(); // 删除越界飞行物及子弹					checkGameOverAction(); // 检查游戏结束					emberAction();				}				repaint(); // 重绘,调用paint()方法			}  		}, intervel, intervel);	} 	private void emberAction() {		Ember[] live = new Ember[embers.length];		int index = 0;		for (int i = 0; i < embers.length; i++) {			Ember ember = embers[i];			if(! ember.burnDown()){				live[index++]=ember;			}		}		embers = Arrays.copyOf(live, index);	}	int flyEnteredIndex = 0; // 飞行物入场计数 	/** 飞行物入场 */	public void enterAction() {		flyEnteredIndex++;		if (flyEnteredIndex % 40 == 0) { // 300毫秒--10*30			FlyingObject obj = nextOne(); // 随机生成一个飞行物			flyings = Arrays.copyOf(flyings, flyings.length + 1);			flyings[flyings.length - 1] = obj;		}	} 		public void stepAction() {		/** 飞行物走一步 */		for (int i = 0; i < flyings.length; i++) { // 飞行物走一步			FlyingObject f = flyings[i];			f.step();		} 		/** 子弹走一步 */		for (int i = 0; i < bullets.length; i++) {			Bullet b = bullets[i];			b.step();		}				hero.step();				for (int i = 0; i < bullets2.length; i++) {			EnemyBullet c = bullets2[i];			c.step();		}		} 	int shootIndex = 0; // 射击计数 	/** 射击 */	public void shootAction() {		shootIndex++;		if (shootIndex % 30 == 0) { // 100毫秒发一颗			Bullet[] bs = hero.shoot(); // 英雄打出子弹			bullets = Arrays.copyOf(bullets, bullets.length + bs.length); // 扩容			System.arraycopy(bs, 0, bullets, bullets.length - bs.length,bs.length); // 追加数组		}		if (shootIndex % 100 == 0) {// 大Boss发射子弹			for (int i = 0; i < flyings.length; i++) {				if (flyings[i] instanceof BigPlane) {// 大Boss发射子弹					BigPlane boss = (BigPlane) flyings[i];					EnemyBullet[] b = boss.shoot();					bullets2 = Arrays.copyOf(bullets2, bullets2.length + b.length);					System.arraycopy(b, 0, bullets2, bullets2.length - b.length, b.length);				}			}		}			}					//		if (shootIndex % 30 == 0) { // 100毫秒发一颗//			//			EnemyBullet[] bs2 =big.shoot(); //			bullets = Arrays.copyOf(bullets, bullets.length + bs2.length); // 扩容//			System.arraycopy(bs2, 0, bullets, bullets.length - bs2.length,//					bs2.length); // 追加数组//		}	//}	/** 子弹与飞行物碰撞检测 */	public void bangAction() {		for (int i = 0; i < bullets.length; i++) { // 遍历所有子弹			Bullet b = bullets[i];			bang(b);		}	} 	/** 删除越界飞行物及子弹 */	public void outOfBoundsAction() {		int index = 0;		FlyingObject[] flyingLives = new FlyingObject[flyings.length]; // 活着的飞行物		for (int i = 0; i < flyings.length; i++) {			FlyingObject f = flyings[i];			if (!f.outOfBounds()) {				flyingLives[index++] = f; // 不越界的留着			}		}		flyings = Arrays.copyOf(flyingLives, index); // 将不越界的飞行物都留着 		index = 0; // 重置为0		Bullet[] bulletLives = new Bullet[bullets.length];		for (int i = 0; i < bullets.length; i++) {			Bullet b = bullets[i];			if (!b.outOfBounds()) {				bulletLives[index++] = b;			}		}		bullets = Arrays.copyOf(bulletLives, index); // 将不越界的子弹留着	} 	/** 检查游戏结束 */	public void checkGameOverAction() {		if (isGameOver()) {			try {				DAO.save(score);			} catch (Exception e) {				// TODO Auto-generated catch block				e.printStackTrace();			}			state = GAME_OVER; // 改变状态		}	} 	/** 检查游戏是否结束 */	public boolean isGameOver() {		int index = -1;				for (int i = 0; i < flyings.length; i++) {			FlyingObject obj = flyings[i];			if (hero.hit(obj)) { // 检查英雄机与飞行物是否碰撞				hero.subtractLife();				hero.setDoubleFire(0);				index = i;								Ember ember = new Ember(hero);				embers = Arrays.copyOf(embers, embers.length+1);				embers[embers.length-1]=ember;			}		}		if(index!=-1){			FlyingObject t = flyings[index];			flyings[index] = flyings[flyings.length-1];			flyings[flyings.length-1] = t;			flyings = Arrays.copyOf(flyings, flyings.length-1);						Ember ember = new Ember(t);			embers = Arrays.copyOf(embers, embers.length+1);			embers[embers.length-1]=ember;		}				for (int i = 0; i < bullets2.length; i++) {			EnemyBullet bb = bullets2[i]; // 获取每一个敌人对象			if (hero.hit2(bb)) { // 返回true,英雄机与敌人相撞了				hero.subtractLife(); // 英雄机减命				hero.setDoubleFire(0); // 英雄机火力值为0,单倍火力				// 碰撞后敌人的后果是消失				EnemyBullet bb1 = bullets2[i];				bullets2[i] = bullets2[bullets2.length - 1];				bullets2[bullets2.length - 1] = bb1;				bullets2 = Arrays.copyOf(bullets2, bullets2.length - 1);			}		}		return hero.getLife() <= 0;	} 	/** 子弹和飞行物之间的碰撞检查 */	public void bang(Bullet bullet) {		int index = -1; // 击中的飞行物索引		for (int i = 0; i < flyings.length; i++) {			FlyingObject obj = flyings[i];			if (obj.shootBy(bullet)) { // 判断是否击中				index = i; // 记录被击中的飞行物的索引				break;			}		}		if (index != -1) { // 有击中的飞行物			FlyingObject one = flyings[index]; // 记录被击中的飞行物 			FlyingObject temp = flyings[index]; // 被击中的飞行物与最后一个飞行物交换			flyings[index] = flyings[flyings.length - 1];			flyings[flyings.length - 1] = temp; 			flyings = Arrays.copyOf(flyings, flyings.length - 1); // 删除最后一个飞行物(即被击中的) 			// 检查one的类型 如果是敌人, 就算分			if (one instanceof Enemy) { // 检查类型,是敌人,则加分				Enemy e = (Enemy) one; // 强制类型转换				score += e.getScore(); // 加分			} 						if (one instanceof Award) { // 若为奖励,设置奖励				Award a = (Award) one;				int type = a.getType(); // 获取奖励类型				switch (type) {				case Award.DOUBLE_FIRE:					hero.addDoubleFire(); // 设置双倍火力					break;				case Award.LIFE:					hero.addLife(); // 设置加命					break;				}			}						//飞行物变成灰烬			Ember ember = new Ember(one);			embers = Arrays.copyOf(embers, embers.length+1);			embers[embers.length-1]=ember;		}	} 	/**	 * 随机生成飞行物	 * 	 * @return 飞行物对象	 */	public static FlyingObject nextOne() {		Random random = new Random();		int type = random.nextInt(20); // [0,4)		if (type==0) {			return new Bee();		}else if(type<=2){			return new BigPlane();		}else{			return new Airplane();		}	}}

下面实现数据库的连接,首先编写将分数写入数据库的方法,在src重新建一个包,包里写写入分数的方法。

<code class="language-java">package DAO;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.SQLException;import util.DBUtil;public class DAO {	/*	 * 增加分数的方法	 */	public static void save(int score) throws Exception{		PreparedStatement ps=null;		Connection conn = null;		try{		conn = DBUtil.getConnection();		String sql ="INSERT INTO mydb2(score) values(?)";		ps = conn.prepareStatement(sql);		ps.setInt(1,score);		ps.executeUpdate();		}catch(SQLException e){			e.printStackTrace();		}finally{			DBUtil.close(conn);		}	}}</code>

然后连接数据库

package util; import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException; public class DBUtil {	public static void main(String[]args) throws Exception{		Connection conn = DBUtil.getConnection();		System.out.println(conn);		DBUtil.close(conn);	}	public static void close(Connection conn){		try{			if(conn != null){				conn.close();			}		}catch(SQLException e){			e.printStackTrace();		}	}	public static Connection getConnection() throws Exception{		//System.out.println("112");		Connection conn = null;		//1.注册驱动(加载驱动)		Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");		conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=数据库名字","sa", "********");				//System.out.println("123");		//		try{//		Class.forName("com.microsoft.sqlserver.jdbc.Driver");//		System.out.println("111");//		//2.建立连接//		conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1443/mydb2","sa","the1012secret");//		System.out.println("111");//		}catch(ClassNotFoundException e){//			//System.out.println("注册驱动");//		}catch(SQLException e){//			e.printStackTrace();//		}		return conn;	}}


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表