我正在做java课程设计关于扫雷的问题 想加进去几个模块 请各位大神帮我打一下代码

我正在做java课程设计关于扫雷的问题 想加进去几个模块 请各位大神帮我打一下代码,第1张

虽然不会Java,但是还要说一句。。。没有标点符号看不明白你的问题啊、、、

顺便帮你完善一下扫雷的规则

先设点开雷区后显示的数字为0,则为空白雷区;1到8则为危险雷区

若是win7系统下的扫雷,开始游戏后在用户第一次点开空白雷区之前不会点到地雷,但XP系统没有这一设定

当用户点开空白雷区时,系统将会自动点开它周围的8个雷区。如果其中还有空白雷区,则会继续点开,一直到周围的雷区都是危险雷区为止

还有就是在危险雷区上左右键一起点的时候,若此危险雷区周围有地雷的标记且等于此雷区上显示的数据的话,则为点开此雷区周围其他所有未标记的雷区

希望对你有帮助

import javautilScanner;

public class Wuziqi {

/

棋盘

/

private final int[][] qipan;

/

步数

/

private int bushu;

/

构造方法,设置棋盘规格

@param x

@param y

/

public Wuziqi(int x, int y) {

if (x < 1 || y < 1) {

Systemoutprintln("棋盘规格应不小于1,使用默认规格");

qipan = new int[9][9];

} else {

qipan = new int[y][x];

}

}

/

游戏开始

/

public void play() {

int[] zuobiao = null;

//如果游戏没有结束

while (!end(zuobiao)) {

//落子,并取得坐标

zuobiao = luozi();

//输出棋盘

out();

}

}

/

输出棋盘和棋子

/

private void out() {

for (int i = 0; i < qipanlength; i++) {

for (int j = 0; j < qipan[i]length; j++) {

if (qipan[i][j] == 0) {

Systemoutprint("  +");

}else if (qipan[i][j] == -1) {

Systemoutprint("  白");

}else if (qipan[i][j] == 1) {

Systemoutprint("  黑");

}

}

Systemoutprintln(" ");

}

}

/

落子

/

private int[] luozi() {

int[] zuobiao;

bushu++;

if (bushu % 2 == 1) {

Systemoutprintln("请黑方落子");

zuobiao = input();

qipan[zuobiao[1]][zuobiao[0]] = 1;

}else {

Systemoutprintln("请白方落子");

zuobiao = input();

qipan[zuobiao[1]][zuobiao[0]] = -1;

}

return zuobiao;

}

/

输入坐标

@return

/

private int[] input() {

Scanner sc = new Scanner(Systemin);

Systemoutprintln("请输入x轴坐标");

String x = scnext();

Systemoutprintln("请输入y轴坐标");

String y = scnext();

//如果没有通过验证,则再次执行input(),递归算法

if (!validate(x, y)) {

return input();

}

int int_x = IntegervalueOf(x);

int int_y = IntegervalueOf(y);

return new int[] {int_x, int_y};

}

/

校验数据

@param x

@param y

@return

/

private boolean validate(String x, String y) {

Integer int_x = null;

Integer int_y = null;

//异常处理的方式判断字符串是否是一个整数

try {

int_x = IntegervalueOf(x);

int_y = IntegervalueOf(y);

} catch (NumberFormatException e) {

Systemoutprintln("坐标格式错误,坐标应为整数");

return false;

}

if (int_x < 0 || int_y < 0 || int_x >= qipan[0]length || int_y >= qipanlength) {

Systemoutprintln("坐标越界");

return false;

}

if (qipan[int_y][int_x] == 0) {

return true;

} else {

Systemoutprintln("坐标上已有棋子");

}

return false;

};

/

结束条件

@return

/

private boolean end(int[] zuobiao) {

if (zuobiao == null) {

return false;

}

//计数器

//表示棋盘上经过最近落子坐标的4条线上的连续(和最近落子颜色相同的)棋子的个数

//如果某条线上连续的棋子大于等于4(加上最近落子本身,大于等于5),则游戏结束,符合五子棋规则

int[] jieguo = new int[4];

int x = zuobiao[0];

int y = zuobiao[1];

//定义八个方向

final int[][] fangxiang = {{-1, 0}, {-1, 1}, {0, 1}, {1, 1}, {1, 0}, {1, -1}, {0, -1}, {-1, -1}};

//最近落子的坐标上的棋子颜色

int number = qipan[y][x];

//搜索最近落子坐标为中心最远4的距离

for (int i = 1; i <= 4; i++) {

//每次搜索不同的距离都搜索八个方向

for (int j = 0; j < fangxianglength; j++) {

//约定如果某个方向为null时,不再搜索这个方向。关键字continue是跳过本次(一次)循环的意思

if (fangxiang[j] == null) {

continue;

}

int mubiao_x = x + i fangxiang[j][0];

int mubiao_y = y + i fangxiang[j][1];

//如果搜索坐标相对于棋盘越界,则不再搜索这个方向

if (mubiao_y >= qipanlength || mubiao_y < 0 || mubiao_x >= qipan[0]length || mubiao_x < 0) {

fangxiang[j] = null;

continue;

}

//如果最近落子坐标上的值等于目标坐标上的值(颜色相同),则计数器上某条线加1

//否则认为这个方向没有棋子或有别的颜色的棋子,不再搜索这个方向

if (number == qipan[mubiao_y][mubiao_x]) {

jieguo[j % 4]++;

}else {

fangxiang[j] = null;

}

}

}

//查看计数器上是否有比3更大的数(查看是否有一方胜出)

for (int i : jieguo) {

if (i > 3) {

Systemoutprintln("游戏结束");

if (bushu % 2 == 1) {

Systemoutprintln("黑方胜");

} else {

Systemoutprintln("白方胜");

}

return true;

}

}

//没有胜出者的情况下,查看棋盘上是否还有空位置,如果有,则游戏可以继续

for (int[] arr : qipan) {

for (int i : arr) {

if (i == 0) {

return false;

}

}

}

//如果没有空位置,则平局

Systemoutprintln("游戏结束,平局");

return true;

}

}

根据规则,应该有个 “打开没有空白方格时递归打开周围空白或数字方格” 的方法;

还要有个 “点击数字方格时,判断周围8个方格标记地雷数量与数字是否相同,相同打开未标记地雷的方块” 的方法。

方格类的思路应该是

class fangGe{

//标记是数字空白还是地雷

int type;

void daKai (){

//判断是否已经打开

//判断类型

//如果是空白 循环周围8个方格 调用其打开方法

//如果是数字,打开自己

//如果是地雷GameOver

}

}

只写了问题相关的,希望对你有帮助。

import javaawtBorderLayout;

import javaawtColor;

import javaawtGridLayout;

import javaawtImage;

import javaawtToolkit;

import javaawteventActionEvent;

import javaawteventActionListener;

import javaawteventWindowAdapter;

import javaawteventWindowEvent;

import javanetURLClassLoader;

import javautilArrayList;

import javautilCollections;

import javaxswingAction;

import javaxswingIcon;

import javaxswingImageIcon;

import javaxswingJButton;

import javaxswingJFrame;

import javaxswingJOptionPane;

import javaxswingJPanel;

/

@author zhan

N年前写的扫雷了。。有没有BUG也懒得改了。。

最少是3年前写的了。。如果我现在写肯定不这样写了。。。汗

/

public class Minesweeper extends JFrame implements ActionListener {

ArrayList<Integer> random = new ArrayList<Integer>();

LButton[] bombs = new LButton[81];

boolean finish = false;

boolean win = false;

//设置窗口

public void lanchFrame() {

thissetBounds(0, 0, 500, 500);

thisaddWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

Systemexit(0);

}

});

thissetTitle("Minesweeper01");

addBombArea();

setVisible(true);

}

//显示所有炸d

public void showBombs() {

for (int i = 0; i < 10; i++) {

bombs[randomget(i)]setBackground(ColorBLACK);

}

}

//添加组件

public void addBombArea() {

JPanel bombArea = new JPanel();

bombAreasetLayout(new GridLayout(9, 9, 1, 1));

for (int i = 0; i < 81; i++) {

bombs[i] = new LButton();

bombs[i]setPosition(i);

bombs[i]addActionListener(this);

bombAreaadd(bombs[i]);

}

setBombs();

thisadd(bombArea, BorderLayoutCENTER);

}

//设置炸d的方法

public void setBombs() {

randomNo();

for (int i = 0; i < 10; i++) {

bombs[randomget(i)]setBomb();

}

}

//获胜的条件

public boolean youWIn() {

for (int i = 0; i < 10; i++) {

bombs[randomget(i)]setShow(true);

}

win = true;

for (int i = 0; i < 81; i++) {

if (!bombs[i]isShow()) {

win = false;

}

}

for (int i = 0; i < 10; i++) {

bombs[randomget(i)]setShow(false);

}

return win;

}

//取得随机数字的方法

public void randomNo() {

randomclear();

for (int i = 0; i < 81; i++) {

randomadd(new Integer(i));

}

Collectionsshuffle(random);

}

//扫雷的方法。。。。用的递归

public void sweeping(LButton checkButton) {

int[] girdNum = new int[8];

int sum = 0;

if (checkButtonisBomb()) {

finish = true;

JOptionPaneshowMessageDialog(null, "you lose", "System:",

JOptionPaneINFORMATION_MESSAGE, null);

showBombs();

} else {

if (!checkButtonisShow()) {

girdNum[0] = checkButtongetPosition() - 10;

girdNum[0] = (girdNum[0] < 0 || (girdNum[0] % 8) == 0) -1

: girdNum[0];

girdNum[1] = checkButtongetPosition() - 9;

girdNum[1] = (girdNum[1] < 0) -1 : girdNum[1];

girdNum[2] = checkButtongetPosition() - 8;

girdNum[2] = (girdNum[2] < 0 || (girdNum[2] % 9) == 0) -1

: girdNum[2];

girdNum[3] = checkButtongetPosition() - 1;

girdNum[3] = (girdNum[3] % 8 == 0) -1 : girdNum[3];

girdNum[4] = checkButtongetPosition() + 1;

girdNum[4] = (girdNum[4] % 9 == 0) -1 : girdNum[4];

girdNum[5] = checkButtongetPosition() + 8;

girdNum[5] = (girdNum[5] > 80 || (girdNum[5] % 8) == 0) -1

: girdNum[5];

girdNum[6] = checkButtongetPosition() | +9;

girdNum[6] = (girdNum[6] > 80) -1 : girdNum[6];

girdNum[7] = checkButtongetPosition() + 10;

girdNum[7] = (girdNum[7] > 80 || (girdNum[7] % 9) == 0) -1

: girdNum[7];

for (int i = 0; i < 8; i++) {

if (girdNum[i] != -1) {

if (bombs[girdNum[i]]isBomb()

&& !bombs[girdNum[i]]isShow())

sum++;

}

}

if (sum > 0) {

checkButtonsetShow(true);

checkButtonsetBackground(Colorgray);

checkButtonsetText("" + sum);

sum = 0;

} else if (sum == 0) {

checkButtonsetShow(true);

checkButtonsetBackground(Colorgray);

for (int i = 0; i < 8; i++) {

if (girdNum[i] != -1 && !bombs[girdNum[i]]isShow()) {

sweeping(bombs[girdNum[i]]);

}

}

}

}

if (youWIn()) {

JOptionPaneshowMessageDialog(null, "You win!!", "System: ",

JOptionPaneINFORMATION_MESSAGE, null);

showBombs();

finish = true;

}

}

}

public static void main(String[] args) {

Minesweeper myMinesweeper = new Minesweeper();

myMinesweeperlanchFrame();

}

public void actionPerformed(ActionEvent e) {

LButton a = (LButton) (egetSource());

if (!finish) {

sweeping(a);

}

}

//自定义的Jbutton用于更好的显示扫雷界面

public class LButton extends JButton {

private int position;

private boolean bomb;

private boolean show;

public LButton() {

super();

}

public LButton(Action a) {

super(a);

}

public LButton(Icon icon) {

super(icon);

}

public LButton(String text, Icon icon) {

super(text, icon);

}

public LButton(String text) {

super(text);

}

public boolean isShow() {

return show;

}

public void setShow(boolean show) {

thisshow = show;

}

public int getPosition() {

return position;

}

public void setPosition(int position) {

thisposition = position;

}

public boolean isBomb() {

return bomb;

}

public void setBomb() {

thisbomb = true;

}

}

}

我有源代码:绝对可以通过,不过比较简单而已,对学生而言应该可以了吧,这是以前写的:

一下两个文件放在一个包里就行了

/

This class defines a class that contains some useful

attributions and some methods to set or get these attributions

/

import javaxswingJButton;

public class ExButton extends JButton

{

//if the button is a mine,the isMine will be true

private boolean isMine;

//to check if a button has been visited is useful

//when using the recursion in the Game class

private boolean isVisited;

//the row number of the button

int btnRowNumber;

//the column number of the button

int btnColumnNumber;

//the mines around a button

int minesAround=0;

public void setIndex(int btnRowNumber,int btnColumnNumber)

{

thisbtnRowNumber=btnRowNumber;

thisbtnColumnNumber=btnColumnNumber;

}

public int getRowNumber()

{

return thisbtnRowNumber;

}

public int getColumnNumber()

{

return thisbtnColumnNumber;

}

public void setVisited(boolean isVisited)

{

thisisVisited=isVisited;

}

public boolean getVisited()

{

return thisisVisited;

}

public void setMine(boolean isMine)

{

thisisMine=isMine;

}

public boolean getMine()

{

return thisisMine;

}

//the attribute of minesAround add one each

//time a mine is put down around the button

public void addMinesAround()

{

thisminesAround++;

}

public int getMinesAround()

{

return thisminesAround;

}

}

-------------------------------------------------

/

File Name: Gamejava

Author: Tian Wei Student Number: Email: xiangchensuiyue@163com

Assignment number: #4

Description: In this program ,a frame will be created which contains

ten "mines"When you click a button ,it will present the

number of mines around or a message of losing the game

(if the button is a mine)You can make a right click to

sign a dengerous button as wellWhen all the mines have

been signed ,a message box of winning the game will jump

to the screenAnd the the message of the time you used in

the gameMore over,you can click the button on the bottom

to restart the game

/

import javaxswing;

import javaawt;

import javaawtevent;

import javautil;

import javautilRandom;

import javautilTimer;

public class Game extends JFrame{

//define some menber variables

private long minute=0,second=0;//take down time used int the game

private ExButton[][] btn;//two-dimension array present the buttons

private JLabel label;

private JButton restart;//restart button

private int minesRemained;//remained mines that you have not signed

private boolean thisTry=true;

private JLabel timeUsed=new JLabel ();

private Random rand=new Random();

private final int ROWS,COLUMNS;

private final int MINES;

// the constuctor

public Game(int rows,int columns,int mines)

{

super("Find mines");

thisROWS=rows;

thisCOLUMNS=columns;

thisMINES=mines;

minesRemained=MINES;

Timer timer=new Timer();//Timer's object to timer the game

timerschedule(new MyTimer(), 0, 1000);//do the function every second

Container container=getContentPane();

containersetLayout(new BorderLayout());

//Jpanel in the Container

JPanel jpanel=new JPanel();

jpanelsetLayout(new GridLayout(ROWS,COLUMNS));

restart=new JButton("click me to restart the game");

JPanel jpanel2=new JPanel();

//Another JPanel in the Container

jpanel2setLayout(new FlowLayout());

jpanel2add(timeUsed);

jpanel2add(restart);

ButtonListener restartHandler=new ButtonListener();

restartaddActionListener(restartHandler);

containeradd(jpanel2,BorderLayoutSOUTH);

btn=new ExButton[ROWS+2][COLUMNS+2];

//initialize the buttons

for(int i=0;i<=ROWS+1;i++)

{

for(int j=0;j<=COLUMNS+1;j++)

{

btn[i][j]=new ExButton();

btn[i][j]addMouseListener(new MouseClickHandler());

btn[i][j]setIndex(i,j);

btn[i][j]setVisited(false);

}

}

for(int i=1;i<=ROWS;i++)

for(int j=1;j<=COLUMNS;j++)

jpaneladd(btn[i][j]);

containeradd(jpanel,BorderLayoutCENTER);

JPanel jpanel3=new JPanel ();

label=new JLabel();

labelsetText("Mines remaining "+MINES);

jpanel3add(label);

containeradd(jpanel3,BorderLayoutNORTH );

thisaddMines();

thisaddMinesAround();

}

//randomly put ten mines

private void addMines()

{

for(int i=1;i<=MINES;i++)

{

int raInt1=randnextInt(ROWS);

int raInt2=randnextInt(COLUMNS);

if((raInt1==0)||(raInt2==0)||btn[raInt1][raInt2]getMine())

i--;

else

btn[raInt1][raInt2]setMine(true);

}

}

//take down the mines around a button

private void addMinesAround()

{

for(int i=1;i<=ROWS;i++)

{

for(int j=1;j<=COLUMNS;j++)

{

if(btn[i][j]getMine())

{

btn[i][j-1]addMinesAround();

btn[i][j+1]addMinesAround();

btn[i-1][j-1]addMinesAround();

btn[i-1][j]addMinesAround();

btn[i-1][j+1]addMinesAround();

btn[i+1][j-1]addMinesAround();

btn[i+1][j]addMinesAround();

btn[i+1][j+1]addMinesAround();

}

}

}

}

//if a button clicked is a empty one,then use a recursion

//to find all the empty buttons around

private void checkEmpty(ExButton button)

{

buttonsetVisited(true);

int x=buttongetRowNumber();

int y=buttongetColumnNumber();

buttonsetBackground(Colorwhite);

if((buttongetMinesAround()==0)&&(x>=1)&&(x<=ROWS)

&&(y>=1)&&(y<=COLUMNS))

{

if(!btn[x][y-1]getVisited())

checkEmpty(btn[x][y-1]);

if(!btn[x][y+1]getVisited())

checkEmpty(btn[x][y+1]);

if(!btn[x-1][y]getVisited())

checkEmpty(btn[x-1][y]);

if(!btn[x+1][y]getVisited())

checkEmpty(btn[x+1][y]);

if(!btn[x-1][y-1]getVisited())

checkEmpty(btn[x-1][y-1]);

if(!btn[x-1][y+1]getVisited())

checkEmpty(btn[x-1][y+1]);

if(!btn[x+1][y-1]getVisited())

checkEmpty(btn[x+1][y-1]);

if(!btn[x+1][y+1]getVisited())

checkEmpty(btn[x+1][y+1]);

}

else if(buttongetMinesAround()>0)

buttonsetText(""+buttongetMinesAround());

}

//the main function

public static void main(String args[])

{

String rows,columns,mines;

int rowNumber,columnNumber,mineNumber;

rows=JOptionPaneshowInputDialog("Enter the rows of the game");

columns=JOptionPaneshowInputDialog("Enter the columns of the game");

mines=JOptionPaneshowInputDialog("Enter the mines of the game");

rowNumber=IntegerparseInt(rows);

columnNumber=IntegerparseInt(columns);

mineNumber=IntegerparseInt(mines);

Game frame=new Game(rowNumber,columnNumber,mineNumber);

framesetTitle("Find Mines");

framesetDefaultCloseOperation(JFrameEXIT_ON_CLOSE);

framesetLocation(220, 80);

framesetSize(600, 600 );

framesetVisible(true);

}

//there are three inner class below

//The first inner class is used to do the mouse listener's

//functionWhen you click a button ,it will present the

//number of mines around or a message of losing the game

//(if the button is a mine)You can make a right click to

//sign a dengerous button as wellWhen ten mines have been

//signed,it will check whether all the signed ones are mines

private class MouseClickHandler extends MouseAdapter

{

public void mouseClicked(MouseEvent event)

{

//get the button that been clicked

ExButton eventButton=new ExButton();

eventButton=(ExButton)eventgetSource();

eventButtonsetVisited(true);

//when it is a right click

if(eventisMetaDown())

{

if(eventButtongetText()=="#")

{

minesRemained++;

eventButtonsetText("");

}

else

{

if((eventButtongetBackground()==Colorwhite)||

(eventButtongetText()!=""))

{

//do nothing

}

else

{

minesRemained--;

eventButtonsetText("#");

}

}

labelsetText("Mines remaining "+minesRemained);

//check if all the signed buttons are mines

if(minesRemained==0)

{

for(int i=1;i<=ROWS;i++)

for(int j=1;j<=COLUMNS;j++)

{

if(btn[i][j]getMine()&&btn[i][j]getText()!="#")

thisTry=false;

if(!btn[i][j]getMine()&&btn[i][j]getText()=="#")

thisTry=false;

}

if(thisTry)

{

//win the game

JOptionPaneshowMessageDialog(null, "You succeed" +

" in this experience!");

JOptionPaneshowMessageDialog(null, "Time used:"+

timeUsedgetText());

}

else//you have wrongly signed one or more mines

JOptionPaneshowMessageDialog(null, "You have wrongly " +

"signed one or more mines,please check it and go on!");

}

}

else if(eventisAltDown())

{

//do nothing

}

else

{//normally click(left click)

if(eventButtongetText()=="#")

{

//do nothing

}

else if(eventButtongetMine())

{

//lose the game

JOptionPaneshowMessageDialog(null, "What a pity!" +

"You failed!" );

//show all the mines to the loser

for(int i=1;i<=ROWS;i++)

for(int j=1;j<=COLUMNS;j++)

{

if(btn[i][j]getMine())

btn[i][j]setBackground(ColorBLACK);

}

JOptionPaneshowMessageDialog(null, "Time used: 0"+

minute+":"+second);

}

else

{

if(eventButtongetMinesAround()==0)

{

//call the function to find all the empty buttons around

checkEmpty(eventButton);

}

else

eventButtonsetText(""+eventButtongetMinesAround());

}

}

}

}

//The second class is to listen to the button which used to

//restart the gameIn this class,it will dispose the old frame

//and create a new one(Of course,the mines's position have

//been changed)

private class ButtonListener implements ActionListener

{

public void actionPerformed (ActionEvent e)

{

//what to dispose is the object of Game class

Gamethisdispose();

//the same code as in the main function

Game frame=new Game(ROWS,COLUMNS,MINES);

framesetTitle("Find Mines");

framesetDefaultCloseOperation(JFrameEXIT_ON_CLOSE);

framesetSize(600, 600 );

//make sure the frame is at the center of the screen

framesetLocation(220, 80);

framesetVisible(true);

}

}

//The last class is the class that will be used in the

//Timer's object timerIt should inherit the class TimerTask

//It is the task that the Timer will do every second

private class MyTimer extends TimerTask

{

public void run()

{

second+=1;

minute+=second/60;

second=second%60;

//change the text of the time used in the game

timeUsedsetText("Time used 0"+minute+":"+second);

}

}

}//end of the class Game

public int time=1000 60; //60秒倒计时

public boolean running=true;//是否一直运行

JLabel label=new JLable();//显示时间的标签

//启动计时

public void startTimer(){

new javalangThread(new Runnable(){

public void run(){

while(running){

try{

Threadsleep(1000);//睡一秒

}catch(Exception e){}

time--;

lablesetText(Stringvalueof(time));

thisupdate();// 把你的界面刷新一下

if(time<0){//倒计时到零,满足条件

//your code: 游戏失败,做点处理

running=false;//记得置成false否则不退出

}

}

}

})start();

}

使用时,在你需要使用的时候 调用 startTimer()方法即可

你可以看到, startTimer方法里的线程在不断地改变time的值,每秒减一

所以你需要在你的GUI界面上安装一个 JLabel label,不断地改变label的内容为time就行了

首先你要在你的电脑上安装jdk。你可以在后面链接地址下载适合你自己的版本(>

在你的电脑上配置java环境变量,主要是配置path和classpath。你可以百度java环境变量配置,可以找到很多java环境变量配置方法。配置完毕,可以在cmd窗口下用java -version来查看是否配置成功。如果显示出java版本相关的信息表示配置成功,可以进行下一步了。

编译你的源代码,cmd窗口下把路径改变(cd)到你源代码文件所在的路径,然后用javac 源文件名编译,例如javac Hellojava(需要注意的是源文件名需要是你文件public类的类名,如果你的文件有public类的话)。当然你也可以不改变(cd)到源文件所在的路径,你的文件就需要加上绝对路径就可以了。例如:javac e:\src\Hellojava

运行你编译好的文件,java Hello(需要注意运行的时候没有后缀java或者class),同样你可以不改变路径用绝对路径运行,例如:java e:\src\Hello如果你的代码中有窗口这样的类似的图形化界面,你就需要用javaw来运行。

另外,你可以使用eclipse,NetBeans这样的集成开发环境(IDE)来写代码,这样方便很多。

以上就是关于我正在做java课程设计关于扫雷的问题 想加进去几个模块 请各位大神帮我打一下代码全部的内容,包括:我正在做java课程设计关于扫雷的问题 想加进去几个模块 请各位大神帮我打一下代码、大神们 急求基于eclipse的java小游戏程序的源码,程序不要多复杂啊。像坦克大战,五子棋,扫雷之类的谢谢、java扫雷递归算法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9402781.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存