0% au considerat acest document util (0 voturi)
5 vizualizări10 pagini

Minesweeper În Java

Acest tutorial oferă instrucțiuni pentru crearea unui joc Minesweeper în Java folosind Eclipse. Se explică pașii pentru configurarea unui proiect, crearea claselor principale și a butoanelor, precum și gestionarea stării jocului și a interacțiunilor utilizatorului. Codul include funcționalități pentru gestionarea bombelor, actualizarea timer-ului și verificarea stării jocului.

Tradus de

ScribdTranslations
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
5 vizualizări10 pagini

Minesweeper În Java

Acest tutorial oferă instrucțiuni pentru crearea unui joc Minesweeper în Java folosind Eclipse. Se explică pașii pentru configurarea unui proiect, crearea claselor principale și a butoanelor, precum și gestionarea stării jocului și a interacțiunilor utilizatorului. Codul include funcționalități pentru gestionarea bombelor, actualizarea timer-ului și verificarea stării jocului.

Tradus de

ScribdTranslations
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd

Minesweeper în Java

Acest tutorial oferă o prezentare generală concisă a ceea ce trebuie să faceț i pentru a obț ine un mic joc grafic de Minesweeper.
rulează pe Overo-ul tău. Dacă nu ai făcut-o, te rog să parcurgi tutorialulialsEclipsa pe
Gumstix pentru utilizatorii noi ș i HelloWorld în Java.

Acest lucru nu explică jocul MineSweeper, ci ne lasă doar să utilizăm codul pentru a vedea un
exemplu de posibilităț i grafice utilizând un Overo COM.

Creează un nou proiect în Eclipse

Fiș ier -> Proiect Nou -> Proiect Java

Creează o clasă Principală

Copiaț i ș i lipiț i următorul cod în acea clasă:

import [Link];
import [Link];
import [Link];
import [Link];

import [Link];
import [Link];
import [Link];
import [Link];

public class MainClass {


public static void main(String args[]) {
JFrame f = new JFrame("Exemplu JColorChooser");
[Link](JFrame.EXIT_ON_CLOSE);
final JButton buton = new JButton("Alege pentru a schimba fundalul");

ActionListener actionListener = new ActionListener() {


public void actionPerformed(ActionEvent actionEvent) {
Color initialBackground = [Link]();
Culoare fundal = [Link](null,
Exemplu JColorChooser
dacă (fundal != null) {
[Link](background);
}
}
};
[Link](actionListener);
[Link]ă(buton, [Link]);
[Link](300, 200);
[Link](true);
}

}
Create a classMineSweeper(Capital S!)

Copiaț i ș i lipiț i următorul cod în acea clasă:

import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];

import [Link];
import [Link];
import [Link];
import [Link];
import [Link];

public class MineSweeper extends JPanel implements AWTEventListener,


ActionListener {

public static enum Stare {


Clicked, Marked, Initial, WrongMarked
}

public static enum GameState {


NotStarted, Playing, Finished
}

numărul maxim de bombe este 10;


int privat RÂNDURI = 9, COLOANE = 9, TOTAL = RÂNDURI *
COLUMNS;
private JPanel pnlPrincipal = new JPanel(new GridLayout(ROWS,
COLUMNS));
private JLabel lblBombCount = new JLabel(MAX_BOMB_COUNT +
"");
private JLabel lblTimer = new JLabel("0");
privat boolean isColorCheatOn = false;
buton privat btnReset = new JButton("Reset");

private void startThread() {


Thread th = new Thread(new Runnable() {
public void run() {
while (state == [Link]ând) {
[Link](([Link]([Link]()) + 1) +
"");
[Link]();
încercă {
[Link](1000);
} catch (InterruptedException e) {
[Link]();
}
}
}
});
[Link]();
}

starea privată a jocului = [Link]început;

public MineSweeper() {
setLayout(new BorderLayout());
adaugă(pnlMain, [Link]);
createButtons();
adaugaPanoulDeControl();
[Link]().addAWTEventListener(this,
AWTEvent.KEY_EVENT_MASK);
}

private void arataDespre() {


<html>Autor : Justin Cowles
Cowperthwaite <br>Version : 1.0</html>", "About",
JOptionPane.INFORMARE_MESAJ);
}

private void reporneș teJocul() {


state = [Link];
[Link]("0");
[Link]();
creeazăButonuri();
[Link]();
[Link]("" + MAX_BOMB_COUNT);
[Link]();
}

private void adaugaPanoulDeControl() {


JPanel pnlTimer = new JPanel(new FlowLayout([Link]));

[Link]ă(lblTimer);

JPanel pnl = new JPanel(new FlowLayout([Link]));

<HTML>Apăsaț i <B>F2</B> pentru a reseta


jocul curent</HTML>
[Link]ă(lblBombCount);
[Link]ă(btnReset);
JPanel pnlN = new JPanel(new GridLayout(1, 3));

[Link](lblBombCount);
[Link]ă(pnl);
[Link]ă(pnlTimer);
adauga(pnlN, [Link]);
[Link](this);
}

private void createButtons() {


List<Point> lstBombsLocation = new ArrayList<Point>();

for (int rand = 0; rand < RÂNDURI; rand++) {


pentru (int col = 0; col < COLUMNS; col++) {
JButton btn = getButton(lstBombsLocation, TOTAL, new
Punct(lin, col)
@Override
public String toString() {
returnează (int) getX() + ", " + (int) getY();
}

@Override
public boolean equals(Object obj) {
return ((Punct) obj).getX() == getX() && ((Punct)
obj).getY() == getY();
}
});
[Link]ă(btn);
}
}
în timp ce ([Link]() < MAX_BOMB_COUNT) {
actualizeazăBomds(lstBombsLocation, [Link]());
}
pentru (Component c : [Link]()) {
updateBombCount((GameButton) c, [Link]());
}
// [Link]("Numărul total de bombe: " +
[Link]());
}

private void updateBomds(List<Point> lstBombsLocation, Component[]


components) {
// int currentPosition = new Double(((locaț ia.x) * COLUMNS ) +
// [Link]()).intValue();
Random r = new Random();
pentru (Component c : componente) {
Punct locaț ie = ((GameButton) c).obț inePoziț ia();
int pozitiaCurenta = nou Double(((locatia.x) * COLOANE) +
[Link]()).intValue();
int bombLocation = [Link](TOTAL);
dacă (locaț ia bombei == poziț ia curentă) {
((GameButton) c).setBomb(true);
[Link](((GameButton) c).getPosition());
întoarce-te;
}
}
}

private GameButton getButton(List<Point> lstBombsLocation, int


totalLocations, Point location) {
GameButton btn = new GameButton(locatie);
[Link](new Insets(0, 0, 0, 0));
[Link](false);
dacă ([Link]() < MAX_BOMB_COUNT) {
dacă (esteBombă()) {
[Link](true);
[Link](location);
}
}
[Link](nou MouseAdapter() {
@Override
public void mouseClicked(MouseEvent evenimentMouse) {
dacă (starea != [Link]ând) {
state = [Link];
startThread();
}
dacă (((GameButton) [Link]()).isEnabled() ==
fals) {
întoarce;
}
dacă ([Link]() == MouseEvent.BUTTON1) {
dacă (((GameButton) [Link]()).getState() ==
[Link]) {
((ButonJoc)
[Link]()).setState([Link]);

[Link](([Link]([Link]()) + 1) + "");
((GameButton) [Link]()).actualizeazaUI();
returna;
}
(ButonJoc)
[Link]()).setState([Link]);
dacă (((GameButton) [Link]()).esteBombă()) {
blastBombs();
return;
} altfel {
dacă (((GameButton) [Link]()).getBombCount()
== 0) {
actualizareZerouriÎmprejur(((GameButton)
[Link]()).getPosition());
}
}
dacă (!verificăStareaJocului()) {
((GameButton) [Link]()).setEnabled(false);
}
} else if ([Link]() == MouseEvent.BUTTON3) {
dacă (((GameButton) [Link]()).getState() ==
[Link]) {
((ButonJoc)
[Link]()).setState([Link]);

[Link](([Link]([Link]()) + 1) + "");
} altfel {
(ButonDeJoc)
[Link]()).setState([Link]);

[Link](([Link]([Link]()) - 1) + "");
}
}
((GameButton) [Link]()).updateUI();
}
});
return btn;
}

private boolean checkGameState() {


boolean esteVictorie = false;
for (Component c : [Link]()) {
GameButton b = (GameButton) c;
dacă ([Link]() != [Link]) {
dacă ([Link]()) {
isWin = true;
} altfel {
returnează fals;
}
}
}
dacă (esteVictorie) {
state = [Link];
pentru (Component c : [Link]()) {
GameButton b = (GameButton) c;
dacă ([Link]ă()) {
[Link]([Link]);
}
[Link](false);

}
[Link](this, "Ai câș tigat jocul :D",
Felicitări
}
return isWin;
}

private void updateSurroundingZeros(Point currentPoint) {


Punct[] puncte = obț ineSurroundings(punctCurent);

pentru (Punct p : puncte) {


GameButton b = getButtonAt([Link](), p);
if (b != null && [Link]() == 0 && [Link]() !=
[Link] && [Link]() != [Link] && [Link]() == false) {
[Link]([Link]);
updateSurroundingZeros([Link]());
[Link]();
}
dacă (b != null && [Link]() > 0 && [Link]() !=
[Link] && [Link]() != [Link] && [Link]() == false) {
[Link](false);
[Link]([Link]);
[Link]();
}
}
}

private void explosionBombelor() {


int blastCount = 0;
pentru (Componenta c : [Link]()) {
((GameButton) c).setEnabled(false);
((GameButton) c).transferFocus();
if (((GameButton) c).isBomb() && ((GameButton) c).getState() !=
[Link])
((GameButton) c).setState([Link]);
((GameButton) c).actualizeazăUI();
blastCount++;
}
dacă (((GameButton) c).esteBombă() == fals && ((GameButton)
c).getState() == [Link]) {
((GameButton) c).setState([Link]);
}
}
[Link]("" + blastCount);
[Link]();
state = [Link];
[Link](this, "You loose the game :(", "Game
Peste
pentru (Component c : [Link]()) {
GameButton b = (GameButton) c;
[Link](false);
}
}

private boolean esteBombă() {


Random r = new Random();
return [Link](ROWS) == 1;
}

public static void main(String[] args) {


JFrame fr = new JFrame("MineSweeper");
[Link](new BorderLayout());
[Link]ă(nou MineSweeper());
[Link](false);
[Link](250, 350);
[Link](null);
[Link](JFrame.EXIT_ON_CLOSE);
[Link](true);
}

clasa GameButton extinde JButton {


private boolean isBomb = false;
punct privat poziț ie = null;
private int bombCount = 0;
private State state = [Link];

public void setState(State state) {


această.stare = stare;
dacă (getBombCount() == 0 && !isBomb) {
setEnabled(false);
}
}

public State getState() {


returnaț i starea;
}
public int getBombCount() {
return bombCount;
}

public void setBombCount(int bombCount) {


[Link] = bombCount;
}

public GameButton(Point pozitie) {


setezPozitia(pozitie);
setText([Link]());
}

public Point getPosition() {


returnează poziț ia;
}

public void setPosition(Point position) {


[Link] = pozitie;
}

public boolean esteBombă() {


return esteBombă;
}

public void setBomb(boolean esteBombă) {


[Link] = isBomb;
}

@Override
public String getText() {
dacă (stare == [Link]ț ială) {
return "";
}
dacă (starea == [Link]) {
ö
}
dacă (starea == [Link]ă) {
dacă (esteBombă) {
<html><font size='16'><b>*</b></font></html>
} altfel {
dacă (getBombCount() > 0)
return getBombCount() + "";
altfel
return "";
}
}
dacă (starea == [Link]) {
return "X";
}
return [Link]();
}

@Override
public Color getBackground() {
dacă (esteActivatCuloareTriș or && esteBombă) {
return [Link];
}
if (state == [Link]) {
dacă (esteBombă) {
return [Link];
}
if (getBombCount() > 0) {
return [Link];
}
}
dacă (esteActiv()) {
return [Link]();
} else {
return [Link]();
}
}
}

private Point[] getSurroundings(Point cPoint) {


int cX = (int) [Link]();
int cY = (int) [Link]();
Point[] points = { new Point(cX - 1, cY - 1), new Point(cX - 1,
cY), noul punct(cX - 1, cY + 1), noul punct(cX, cY - 1), noul punct(cX, cY + 1),
new Point(cX + 1, cY - 1), new
Punct(cX + 1, cY), nou punct(cX + 1, cY + 1) };
returnaț i punctele;
}

private void updateBombCount(GameButton btn, Component[] components)


{
Punct[] puncte = obtineMediul([Link]());

pentru (Punct p : puncte) {


GameButton b = getButtonAt(components, p);
dacă (b != null && [Link]()) {
[Link]([Link]() + 1);
}
}
[Link]([Link]() + "");
}

private GameButton getButtonAt(Component[] components, Point


poziț ie) {
pentru (Component btn : componente) {
dacă ((((GameButton) btn).getPosition().equals(position))) {
return (GameButton) btn;
}
}
return null;
}

public void eventDispatched(AWTEvent event) {


dacă ([Link](event) && ((KeyEvent)
(eveniment)).getID() == KeyEvent.KEY_RELEASED) {
dacă (((KeyEvent) (eveniment)).getKeyCode() == KeyEvent.VK_F1) {
afiseazaDespre();
}
dacă (((KeyEvent) (eveniment)).getKeyCode() == KeyEvent.VK_F2) {
resetareJoc();
}
dacă (((KeyEvent) (eveniment)).getKeyCode() == KeyEvent.VK_F3) {
isColorCheatOn = !isColorCheatOn;
dacă (starea == [Link]ând) {
[Link]();
}
}

if (((KeyEvent) (event)).getKeyCode() == KeyEvent.VK_F12) {


pentru (Componenta c : [Link]()) {
GameButton b = (GameButton) c;
dacă ([Link]() == fals) {
[Link]([Link]);
} altfel {
[Link]([Link]);
}
[Link](false);
}
checkGameState();
}
}
}

public void actionPerformed(ActionEvent actionEvent) {


dacă ([Link]() == btnReset) {
repornesteJocul();
}
}
}

S-ar putea să vă placă și