关于java坦克大战联网版的信息
今天给各位分享java坦克大战联网版的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
java之坦克大战
最近学习不喜欢在算法上磕太长时间了,所以我就开始写小游戏了,也算是给自己一个目标,写个游戏里面需要的东西很多,就第一项窗口的建造而言,JFreme类的使用中有很多的方法需要记忆,此外对于类与对象的使用也占了很大的部分。
我是观看教程然后学习制作坦克大战,最开始是制作窗口,用到了一个类JFrame下面是一些使用方法。
jf.setTitle("我是标题鸭!!!");(制作标题)
jf.setSize(20,10)//设置了一个长为20,高为10的框图。
jf.setBounds(1,2,20,10)//设置一个左上角顶点在(1,2),长为20,宽为10的窗体。
jf.setLocation(1,2)//设置一个左上角顶点在(1,2)的窗体。
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);(这样设置会导致你在关闭窗体的同时,终止程序的运行,会带来一定的便利性。)
jf.setVisible(true);(窗体在默认情况下是不可见的,只在后台运行,只有像这样设置可见后,在程序运行的时候,窗体才会出现。)
然后是背景窗口的上色与选项字体的添加, setColor方法:设置颜色, 该方法用于设置画笔的颜色,例如Color.BLACK:黑色,还需要填充画布使用 fillRect (int x,int y,int width,int height)绘制并填充矩形 4个参数,x、y起点坐标,宽,长。
不得不说有一个明确的目标确实学习的比较快。
java 编写坦克大战
需要看你的tank的draw方法里的内容代码和碰撞检测代码。
一般二维碰撞检测基本都是以单位格,也就是坦克的大小格作为单位,提前一格判断两个方格是否交叉,如果交叉则在当前,也就是交叉后退后一格这个位置让它停止当前方向的移动。
JAVA 坦克大战
import java.awt.*;
import javax.swing.*;
public class Tank extends JFrame {
mypane mp=null;
Obj[] objs=new Obj[0];
public Tank() {
setTitle("坦克大战");
setSize(800,600);
pro();
add(new mypane(objs));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
//在这里添加键盘事件、鼠标事件、让坦克移动,修改objs数组对象让他们移动
setVisible(true);
}
private void pro(){
Obj[] tmp=new Obj[objs.length+1];
System.arraycopy(objs,0,tmp,0,objs.length);
tmp[tmp.length-1]=new Obj(1,1,0,1);
objs=tmp;
int num=(int)(Math.random()*5)+1;
for(int i=0;inum;i++){
int x=(int)(Math.random()*getWidth())+1;
int y=(int)(Math.random()*getHeight())+1;
int dir=(int)(Math.random()*4);
Obj[] dst=new Obj[objs.length+1];
System.arraycopy(objs,0,dst,0,objs.length);
dst[dst.length-1]=new Obj(x,y,1,dir);
objs=dst;
}
}
public static void main(String[] args) {
new Tank();
}
}
class Obj{
int x,y;//坦克坐标
int type;
int dir;
public Obj(int x,int y,int type,int dir){
this.x=x;
this.y=y;
this.type=type;
this.dir=dir;
}
}
class mypane extends JPanel{
Obj[] objs;
public mypane(Obj[] objs){
this.objs=objs;
}
public void paint(Graphics g) {
super.paint(g);
for(int i=0;iobjs.length;i++){
Obj obj=objs[i];
drawtank(obj.x,obj.y, g, obj.type, obj.dir);
}
g.dispose();
}
public void drawtank(int x,int y,Graphics g, int type,int direct) {
/*type 为坦克类型,敌方,我方*/
switch(type) {
case 0://我方坦克,设置为红色
g.setColor(Color.red);
break;
case 1://敌方坦克,设置为蓝色
g.setColor(Color.blue);
break;
}
switch(direct) {
case 0://坦克方向朝上
g.drawRect(0+x, 0+y, 5, 30);
g.drawRect(5+x, 5+y, 10,20);
g.drawRect(15+x,0+y, 5,30);
g.drawLine(10+x, 15+y, 10+10+x, 15+y);
break;
case 1://坦克方向朝右
g.drawRect(0+x, 0+y, 30, 5);
g.drawRect(5+x, 5+y, 20, 10);
g.drawRect(0+x, 15+y, 30, 5);
g.drawLine(15+x, 10+y, 30+15+x, 10+10+y);
break;
case 2://方向向下
g.drawRect(0+x, 0+y, 5, 30);
g.drawRect(5+x, 5+y, 10,20);
g.drawRect(15+x,0+y, 5,30);
g.drawLine(10+x, 15+y, 10+10+x, 30+15+y);
break;
case 3://方向向左
g.drawRect(0+x, 0+y, 30, 5);
g.drawRect(5+x, 5+y, 20, 10);
g.drawRect(0+x, 15+y, 30, 5);
g.drawLine(15+x, 10+y, 15+x, 10+10+y);
break;
}
}
}
java 能单独开发网络版坦克大战,能去找工作嘛?工资呢?
只能说你具备了基本的java能力,建议在学习一下javaweb,等三大框架的知识,这样能更好的找到工作。如果还有时间,学个android更不错。
如何使用JAVA开发坦克大战的游戏?
这个版本的坦克大战,主要是为了前期对JAVA学习基础知识的一次巩固,虽然还有许多功能没有实现,但是仍然是值得肯定的一次的小项目,这次练手对JAVA的面对对象的理解更加深入。发现学习算法搞搞ACM对与编程真的有很大的帮助,尤其在设计代码结构的时候感觉尤为明显。以后的学习中也要兼顾算法的练习和提高。
package com.xrh.tank;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Rectangle;
public class Wall {
int x,y,w,h;
TankClient tc;
public Wall(int x, int y, int w, int h, TankClient tc) {
this.x = x;
this.y = y;
this.w = w;
this.h = h;
this.tc = tc;
}
//画出墙体
public void draw(Graphics g){
Color c=g.getColor();
//Color myColor=new Color(0, false) ;透明
//g.setColor(myColor);
g.drawRect(x, y, w, h);
g.setColor(c);
}
//返回墙体矩形
public Rectangle getRect(){
return new Rectangle(x, y, w, h);
}
}
源码已经开源,点击下载。
如果你觉得这篇文章有用可以点点赞我会很开心的。
java坦克大战联网版的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、java坦克大战联网版的信息别忘了在本站进行查找喔。
发布于:2022-12-08,除非注明,否则均为
原创文章,转载请注明出处。