Java编写实现坦克大战小游戏

本文实例为大家分享了Java实现坦克大战小游戏的具体代码,供大家参考,具体内容如下

创作背景:n年前的学期末课题设计,从b站上学的,一个代码一个代码敲出来的。

小游戏介绍:

红色坦克是我们的操纵坦克,黑色是敌人坦克。
上下左右键控制坦克移动方向
按ctrl键发射炮弹
红色坦克可以穿墙,黑色不可以

具体页面如下:

奉上全部源代码:

Tank.java

import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class Tank {
    private int x;
    private int y;
    private  int oldx;
    private  int oldy;
    private int life = 100;
private boolean bL = false ,bU = false ,bR = false ,bD= false;
//产生随机数
private static Random r = new Random();
//九种坦克运动方向
enum Direction{L,LU,U,RU,R,RD,D,LD,STOP};
//初始化坦克方向
private Direction  dir = Direction.STOP;
//初始化炮筒方向
private Direction ptDir = Direction.U;
//坦克移动速度
private static final int XSPEED = 5;
private static final int  YSPEED = 5;
//坦克大小
private static final int WIDTH = 30;
private static final int HIGHT =30;
//定义TankClient类
TankClient tc;
public int getLife(){
    return  life;
    }
public void setLife(int life){
    this.life =life;
}
private boolean good =true ;//定义坦克类型,敌方还是我方
public boolean isgood()
{
    return good;
}
//定义坦克状态
private boolean live = true;
//设置enemy坦克随机移动步数
private static int step = r.nextInt(12)+3;
//构造坦克状态方法
public boolean islive ()
{
    return live;
}
public void setlive(boolean live)
{
    this.live = live;
}
//构造方法
public Tank(int x, int y) {
        this.x = x;
        this.y = y;
    }
public Tank (int x,int y,Boolean good ,Direction dir,TankClient tc)
{
    this (x,y);
    this.good = good;
    this.dir = dir ;
    this.tc = tc;
}
public void draw (Graphics g)
    {
        if (!live) 
        {
            if (!good)
            {
                tc.tanks.remove(this);
            }
            return;
        }
        Color c = g.getColor();//?
        if(good==true)
            {g.setColor(Color.RED);}//定义我方坦克颜色
        else g.setColor(Color.BLACK);//定义敌方坦克颜色
        g.fillOval(x,y, WIDTH, HIGHT);//定义坦克位置及大小
        g.setColor(c);//?
        move();
        switch (ptDir)//画炮筒
        {
        case L:
            g.drawLine(x + Tank.WIDTH / 2, y + Tank.HIGHT / 2, x, y
                    + Tank.HIGHT / 2);
            break;
        case LU:
            g.drawLine(x + Tank.WIDTH / 2, y + Tank.HIGHT / 2, x, y);
            break;
        case U:
            g.drawLine(x + Tank.WIDTH / 2, y + Tank.HIGHT / 2, x + Tank.WIDTH
                    / 2, y);
            break;
        case RU:
            g.drawLine(x + Tank.WIDTH / 2, y + Tank.HIGHT / 2, x + Tank.WIDTH,
                    y);
            break;
        case R:
            g.drawLine(x + Tank.WIDTH / 2, y + Tank.HIGHT / 2, x + Tank.WIDTH,
                    y + Tank.HIGHT / 2);
            break;
        case RD:
            g.drawLine(x + Tank.WIDTH / 2, y + Tank.HIGHT / 2, x + Tank.WIDTH,
                    y + Tank.HIGHT);
            break;
        case D:
            g.drawLine(x + Tank.WIDTH / 2, y + Tank.HIGHT / 2, x + Tank.WIDTH
                    / 2, y + Tank.HIGHT);
            break;
        case LD:
            g.drawLine(x + Tank.WIDTH / 2, y + Tank.HIGHT / 2, x, y
                    + Tank.HIGHT);
            break;
        }
    }

private void stay()
{
    this.x=oldx;
    this.y=oldy;
    }
//坦克移动
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)
    {
        ptDir = dir;
    }
    if (x<0) x=0;
    if (y<20) y=20;
    if (x>TankClient.WinWidth-Tank.WIDTH) x=TankClient.WinWidth-Tank.WIDTH;
    if (y>TankClient.WinHigh-Tank.HIGHT) y=TankClient.WinHigh-Tank.HIGHT;
    //让enemy坦克自由移动
    if (!good)
    {
        Direction[] dirs= Direction.values();//将枚举转化为数组
        if (step ==0)
        {
            step = r.nextInt(12)+3;
            int rn = r.nextInt(dirs.length);//产生随机数
            dir = dirs[rn];
        }
        step--;
    if (r.nextInt(40)>38)
            {this.fire();}
    }
}
//坦克方向
void localDirection()
{
    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 dir =Direction.STOP;
}
public void keyPressed(KeyEvent e) 
    {
        int key = e.getKeyCode();
            switch (key)
        {
            case KeyEvent.VK_CONTROL:
                fire();
                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;
        }
        localDirection();//获取执行方向

    }
public void keyReleased(KeyEvent e) {
    int key = e.getKeyCode();
    switch (key)
{
    case KeyEvent.VK_LEFT:
        bL=false;
        break;
    case KeyEvent.VK_UP:
        bU=false;
        break;
    case KeyEvent.VK_RIGHT:
        bR=false;
        break;
    case KeyEvent.VK_DOWN:
        bD=false;
        break;
}
    localDirection();
    
}
//定义坦克发射子弹类
    public Missile fire()
    {
        if (!live) return null;
        int x= this.x+Tank.WIDTH/2-Missile.WIDTH/2;
        int y= this.y +Tank.HIGHT/2-Missile.HIGHT/2;
        Missile m = new Missile(x,y,ptDir,good,tc);
        tc.Missiles.add(m);
        return m;
    }
//《碰撞检测》获取坦克矩形属性
    public Rectangle getRect()
    {
        return new Rectangle(x,y,WIDTH,HIGHT);
    }
    //《碰撞检测》
    public boolean tankHitWall(Wall w)
    {
        if(this.getRect().intersects(w.getRect()))
        {
            stay();
            return true;
        }
        return false;
    }
    public boolean tankHitTank(java.util.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;
    }
}

Wall.java

import java.awt.*;
public class Wall {
     int x;
     int y;
     int width;
     int height;
     TankClient tc;

    public Wall (int x,int y,int width,int height, TankClient tc)
    {
        this.x= x;
        this.y= y;
        this.width = width;
        this.height = height;
        this.tc = tc;
    }
    public void draw(Graphics g)
    {
        Color c = g.getColor();
        g.setColor(Color.GRAY);
        g.fillRect(x, y, width, height);
        g.setColor(c);
        
    }
    //《碰撞检测》获取矩形属性
        public Rectangle getRect()
        {
            return new Rectangle(x,y,width,height);
        }
    
}

TankClient.java

import java.awt.*;
import java.awt.event.*;
import java.util.List;
import java.util.ArrayList;
public class TankClient extends Frame {
    Tank myTank = new Tank(400,430,true,Tank.Direction.STOP,this);//创建自己的坦克
    List <Tank>  tanks= new ArrayList<Tank>(); //创建敌人坦克容器
    List<Explode> Explodes = new ArrayList<Explode>();//创建爆炸容器
    List<Missile> Missiles = new ArrayList<Missile>();//定义容器,存放炮弹
    Wall wall1 = new Wall(100,100,30,400,this);
    Wall wall2 = new Wall(350,400,400,30,this);
    /*
     * 定义窗口大小变量
     */
    public static final int WinWidth=800;
    public static final int WinHigh=600;
    //定义框架大小
    public void launchFrame()
    {
        //添加10辆敌人坦克
        for (int i = 0;i<10;i++)
        {
            tanks.add(new Tank(50+40*i,100,false,Tank.Direction.D,this));
        }
        this.setLocation(40,40);//定义窗口位置
        this.setSize(WinWidth,WinHigh);//设置窗口大小
        this.setTitle("坦克大战");//设置窗口标题
        //设置监听器,使窗口关闭
        this.addWindowListener(new WindowAdapter()
                {
                    public void windowClosing(WindowEvent e)
                    {
                        System.exit(0);
                    }
                });
        this.setBackground(Color.WHITE);//设置窗口背景颜色
        this.setVisible(true);//设置窗口可见
        this.setResizable(false);//设置为不可调整窗口大小
        this.addKeyListener(new KeyMonitor());
        new Thread(new PaintThread()).start();
    }
    //定义一个新图片为空,双缓冲
    Image OffScreenImage = null;
    /*
     * 定义画板
     */
    public void paint(Graphics g)
    {    //g.drawString("当前炮弹数"+Missiles.size(), 40, 80);
        //g.drawString("当前爆炸数"+Explodes.size(), 40, 100);
        g.drawString("Tank数量"+tanks.size(),40,40);
        g.drawString("MyTank血量"+myTank.getLife(),40,60);
        for (int i=0;i<Missiles.size();i++)
        {
            Missile m = Missiles.get(i);     
            m.hitTanks(tanks);
            m.hitTank(myTank);
            m.hitWall(wall1);
            m.hitWall(wall2);
            m.draw(g);
        }
        for (int i=0;i<Explodes.size();i++)
        {
            Explode e = Explodes.get(i);
            e.draw(g);
        }
        for (int i = 0;i<tanks.size();i++)
        {
            Tank t = tanks.get(i);
            t.tankHitWall(wall1);
            t.tankHitWall(wall2);
            t.tankHitTank(tanks);
            t.draw(g);
        }
        myTank.draw(g);
        wall1.draw(g);
        wall2.draw(g);
    }
    //重写update 刷新屏幕先调用update方法再调用画笔工具,故刷新屏幕让其直接调用update方法
    public void update (Graphics g)
    {
        if (OffScreenImage == null )
        {
            OffScreenImage = this.createImage(WinWidth,WinHigh);
        }
        Graphics gOffScreen = OffScreenImage.getGraphics();
        Color c = gOffScreen.getColor();
        gOffScreen.setColor(Color.WHITE);
        gOffScreen.fillRect(0,0,WinWidth,WinHigh);
        gOffScreen.setColor(c);
        paint(gOffScreen);
        g.drawImage(OffScreenImage,0,0,null);
    }
    public static void main(String[] args)
    {
        TankClient tankClient = new TankClient();
        tankClient.launchFrame();

    }
    //线程类--刷新屏幕
    private class PaintThread implements Runnable
    {
        public void run()
        {
            while(true)
            {
                repaint();  //刷新屏幕
                try
                {
                    Thread.sleep(40);
                }catch (InterruptedException e)
                {
                    e.printStackTrace();
                }
            }
        }
    }
    /**
     * 
     * 内部类 添加键盘监听
     *
     */
        private class KeyMonitor extends KeyAdapter {
            //按键时
            public void keyPressed(KeyEvent e) {
                myTank.keyPressed(e);
            }
            //松键时
            public void keyReleased(KeyEvent e) 
            {
                myTank.keyReleased(e);
            }
            
        }
}

Explode.java

import java.awt.*;
public class Explode {
    int x;
    int y;
    private boolean live = true;
    private TankClient tc ;
    int[] diameter = {30,40,50,40,30,10,5};
    int step = 0;
    //结构
    public Explode (int x ,int y,TankClient tc) {
        this.x =x;
        this.y = y;
        this.tc = tc;
    }
    public void draw (Graphics g) {
        if(!live){
        tc.Explodes.remove(this);    
        return ;
        }
        if (step ==diameter.length) {
            live = false ;
            step = 0;
            return ;
        }
        Color c = g.getColor();
        g.setColor(Color.RED);
        g.fillOval(x, y, diameter[step], diameter[step]);
        g.setColor(c);
        step++;
    }
}

Missile.java

import java.awt.*;
import java.util.List;
//定义子弹类
public class Missile {
    //定义子弹速度
    public static final int XSPEED=10;
    public static final int YSPEED=10;
    //定义子弹大小
    public static final int WIDTH =10;
    public static final int HIGHT =10;
    private boolean live= true ;//定义炮弹状态
    //定义发出的炮弹归属
    private boolean good;
    public boolean islive()
    {
        return live;
    }
    int x,y ;//子弹坐标
    TankClient tc;
    Tank.Direction dir;
    public Missile (int x,int y ,Tank.Direction dir)
    {
        this.x=x;
        this.y=y;
        this.dir=dir; 
    }
    public Missile(int x,int y,Tank.Direction dir,boolean good,TankClient tc)
    {
        this(x,y,dir);
        this.good = good;
        this.tc=tc;
    }
    public void draw (Graphics g)
    {    if (!live) {
        tc.Missiles.remove(this);
    }
        Color c= g.getColor();
        if (good)
        {
            g.setColor(Color.RED);
        }else {
            g.setColor(Color.BLACK);
        }
        g.fillOval(x, y, WIDTH,HIGHT);//设置炮弹大小
        g.setColor(c);
        move();
    }
    void move ()

    {
        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;
        }
        if (x<0||y<0||x>TankClient.WinWidth||y>TankClient.WinHigh)
        {
            live =false;
        }
    }
//《碰撞检测》获取子弹矩形属性
    public Rectangle getRect()
    {
        return new Rectangle(x,y,WIDTH,HIGHT);
    }
//《碰撞检测》
    public boolean hitTank(Tank t)
    {
        if(this.live&&this.getRect().intersects(t.getRect())&&t.islive()&& this.good!=t.isgood())
        {    if (t.isgood())
            {
                t.setLife(t.getLife()-20);
                if (t.getLife()<=0)
                {t.setlive(false);}
            }else{t.setlive(false);}
            this.live = false;
            Explode e = new Explode(x-10,y-10,tc);
            tc.Explodes.add(e);
            return true;
        }
        return false;
    }

    public boolean hitTanks(List<Tank> tanks)
    {
        for (int i=0;i<tanks.size();i++)
        {
            if (hitTank(tanks.get(i)))
            {
                return true;
            }
        }
        return false ;
    }
    //撞墙碰撞检测
        public boolean hitWall (Wall w)
        {
            if (this.live&&this.getRect().intersects(w.getRect()))
            {
                this.live =false;
                return true;
            }
            return false ;
        }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • java实现坦克大战小游戏

    用java程序编写的一个坦克大战,可以实现两人同时在线 需要代码的可以私信联系我 package com.mr.frame; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Rectangle; import java.awt.event.KeyEvent; import java.awt.event.KeyList

  • java简单坦克大战制作代码

    利用Java语言中的集合.Swing.线程等知识点编写一个坦克大战游戏. (1) 画出敌我坦克的原理: 在坦克类里面有一个布尔类型变量good.用于判断坦克的阵营,在创建坦克对象时在Tank类的构造方法中传入good的值.在画坦克的时候判断good的值,区分敌我坦克的颜色: (2) 坦克运动的原理: 在坦克类里写入了监听键盘摁键的响应事件,对监听到的上下左右键进行记录,并合成坦克移动的八个方向的变量.之后对应每个方向的不同对坦克坐标x,y的值做响应的更改实现我方坦克的移动.而敌方坦克则自动移动,

  • Java版坦克大战游戏源码示例

    整理文档,搜刮出一个Java版坦克大战游戏的代码,稍微整理精简一下做下分享. package tankwar; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.io.File; import java.io.FileInputStream; imp

  • Java Swing实现坦克大战游戏

    一.引言 90坦克大战,很经典的一款游戏,当年与小伙伴一人一个手柄,搬上小板凳坐在电视机前,身体时不时跟随手柄摇晃着,时而表情严肃.眉头紧锁,时而欢呼雀跃.喜笑颜开,全身心投入到游戏中,在消灭一只只坦克.守住关卡.坦克升级.晋级通关的时候,更是手舞足蹈.击掌庆祝,如今想想也是记忆犹新.回味无穷!于是乎就我就自己用java写了一个,找一下当年的感觉,顺便虐一下电脑,嘻嘻嘻嘻嘻(ming式笑声). 二.效果图 三.实现 绘图时将这个鹰的图标用 g.drawImage 的方式绘制在界面中央最下方,然后

  • java课程设计之坦克大战

    本文实例为大家分享了java坦克大战的具体代码,供大家参考,具体内容如下 环境要求: 操作系统:Windows 10 JAVA虚拟机:JDK1.8以上 开发环境:Eclipse(4.5以上) 功能提示: 1.游戏要有图形用户界面,界面能够反映游戏所有的细节. 2.界面中要有坦克,墙,树林,河流. 3.界面中要有一个"家","家"被攻击中则输了游戏. 4.坦克分两种,敌方和我方. 5.墙也分为两种,可以穿透的普通墙,不可以穿透的铁墙. 6.树和河流均只有一种,树林坦克

  • java实现坦克大战游戏

    本文实例为大家分享了java实现坦克大战游戏的具体代码,供大家参考,具体内容如下 一.实现的功能 1.游戏玩法介绍 2.自定义游戏(选择游戏难度.关卡等) 3.自定义玩家姓名 4.数据的动态显示 二.程序基本结构 三.主要的界面 1)游戏首页 2)自定义游戏页面 3)游戏介绍 4)开始游戏,自定义玩家姓名 5)游戏主页面 四.主要代码 1)数据的初始化类 public class Data { public static boolean isRestart=false; public stati

  • java制作简单的坦克大战

    详情请参照注释,这里就不多废话了,实现一下儿时的经典而已. Blood.java package com.hkm.TankWar; import java.awt.*; /** * 血块类,我方坦克吃了可回血: * @author Hekangmin * */ public class Blood { private int x,y,w,h;//血块的位置和宽度高度: private TankWarClient tc; private int step=0;//纪录血块移动的步数: privat

  • JavaSwing坦克大战游戏的设计和实现

    目录 需求分析: 功能设计: 具体设计: 图形用户界面 界面中的元素 游戏截图: 还记得传说中的经典90坦克大战吗?那些怀旧的记忆,伴随着我们一起走过来的经典坦克大战,刚开始那战战兢兢,屡屡被敌人坦克击毁的情景历历在目.现在好了,再也不用担心敌人坦克了,可以横冲直撞,横扫敌人坦克了.作为程序员的我刚好可以利用所学的Java相关知识来完成一个坦克大战游戏.一起来看看是如何设计完成的吧. 需求分析: 首先游戏要有图形用户界面,界面能够反映游戏所有的细节. 界面中要有坦克,墙,树林,河流. 界面中要有

  • 经典再现 基于JAVA平台开发坦克大战游戏

    一.需求描述  1.功能性需求 在功能需求分析阶段,我们的主要任务是指定系统必须提供哪些服务,定义软件完成哪些功能,提供给那些人使用,功能需求是软件开发的一项基本需求,是需求分析必不可少的一部分.坦克大战是一款经典游戏了,本游戏学习了一些前辈们的经验,整体来说讲,游戏分为敌我双方,主要参与战斗的坦克有玩家控制,敌人坦克可以智能随机出现在屏幕上,并且移动,发射一定数量的子弹:玩家可以在规定的区域内随意移动坦克,当有子弹击中玩家时,玩家死亡,游戏结束:敌人坦克智能运行,敌方坦克由于需要具有一定智能性

  • Java编写实现坦克大战小游戏

    本文实例为大家分享了Java实现坦克大战小游戏的具体代码,供大家参考,具体内容如下 创作背景:n年前的学期末课题设计,从b站上学的,一个代码一个代码敲出来的. 小游戏介绍: 红色坦克是我们的操纵坦克,黑色是敌人坦克.上下左右键控制坦克移动方向按ctrl键发射炮弹红色坦克可以穿墙,黑色不可以 具体页面如下: 奉上全部源代码: Tank.java import java.awt.*; import java.awt.event.*; import java.util.*; public class

  • C++实现坦克大战小游戏EGE图形界面

    C++ EGE 实现坦克大战小游戏,供大家参考,具体内容如下 因为有过一次用EGE写小游戏的经验,所以这一次写坦克大战快了很多.并且使用对象编程也简化了很多编程时繁琐的步骤. 写出坦克大战使我在学习编程的道路上又迈出了一大步. 如果您需要图片素材的,我可以单独发给您. 技术环节: 编译环境:Windows VS2019 需求: 控制坦克移动发射炮弹,炮弹可以消灭敌军坦克,且可以消灭砖块.坦克遇到方块会被挡住.敌军消灭我军三次或基地被毁则游戏失败,共摧毁十次敌方坦克游戏胜利. 思路: 先写出坦克的

  • python+pygame实现坦克大战小游戏的示例代码(可以自定义子弹速度)

    python+pygame实现坦克大战小游戏-可以自定义子弹速度: 运行环境–python3.7.pycharm: 源码需要请:点赞留言邮箱: 正常版子弹速度: 普通速度版 加速版子弹速度: 子弹加速版 另外还有多种道具,支持两人一起玩.main()方法如下: def main(): pygame.init() pygame.mixer.init() resolution = 630, 630 screen = pygame.display.set_mode(resolution) pygame

  • java实战之飞机大战小游戏(源码加注释)

    一.工程文件 二.Main.java 主函数,实现类 package ui; //主函数实现 public class Main { public static void main(String[] args) { //创建窗体 GameFrame frame = new GameFrame(); //创建面板 GamePanel panel = new GamePanel(frame); //调用开始游戏的方法启动游戏 panel.action(); //将面板加入到窗体中 frame.add

  • 基于Java语言在窗体上实现飞机大战小游戏的完整步骤

    目录 小组项目 模块需求描述 总体开发思想 功能实现 1.登录与结束界面 2.播放音乐 3.子弹 运行测试 登陆界面 发射子弹 总结 小组项目 飞机大战:用 Java 语言在窗体上实现飞机大战小游戏,运行程序后,出现一个窗体,在窗体上用鼠标控制英雄机的移动,通过子弹打击敌机进行分数的计算,以及英雄机血量的计算等. 主要模块:登陆界面.音乐.子弹.敌机.英雄机.背景图.结束界面.BOSS 机.分数计算.血量计算. 负责模块:登陆界面.音乐.子弹.结束界面. 模块需求描述 登陆界面:运行程序后,弹出

  • java学习之猜数字小游戏

    今天主要学习了一些初级的设计,完成了这个猜数字的小游戏,其是也算不上是什么游戏,因为我答案都给出来了.当然也是想对代码更加熟练的操作,让自己能够得心应手. 这个小程序中让我花了点时间的主要是那个如何去重的问题,当时也是思考良久,后来才考虑到使用死循环让随机数产生直到不重复为止,其他感觉也还好. import java.util.Scanner; public class GuessingGames { public static void main(String[] args) { Scanne

  • Java实战之贪吃蛇小游戏(源码+注释)

    一.工程文件 二.Main.java package com.company; import javax.swing.*; public class Main { public static void main(String[] args) { //创建窗体对象 JFrame frame = new JFrame(); //创建窗体参数() frame.setBounds(10,10,900,720); //设置不允许更改大小 //frame.setResizable(false); //设置关

  • java实战之猜字小游戏

    一.题目描述 二.思路 语法基础:StringBuilder 类似列表,可以更改元素. package Practice; public class tt { public static void main(String[] args) { String str = "banana"; System.out.println(str.indexOf('z')); // -1 System.out.println(str.indexOf('a', 2)); // 3 StringBuild

随机推荐