关于java坦克大战联网版的信息

博主:adminadmin 2022-12-08 03:27:07 57

今天给各位分享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坦克大战联网版的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-08,除非注明,否则均为首码项目网原创文章,转载请注明出处。