Skip to content
Snippets Groups Projects
Commit 808bdcb4 authored by BAUER Oscar's avatar BAUER Oscar
Browse files

working menu bar

- addad Interactive menu bar for color choice and difficulty adjustment.

- commented out the not used method variations

- added print of restart message in case of loss/win

- added difficulty to banner
parent 4577be00
No related branches found
No related tags found
No related merge requests found
Showing
with 1911 additions and 1766 deletions
......@@ -2778,3 +2778,88 @@ user global configuration and to define the default location to store repositori
not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and
EGit might behave differently since they see different configuration options.
This warning can be switched off on the Team > Git > Confirmations and Warnings preference page.
!SESSION 2024-11-16 17:40:38.088 -----------------------------------------------
eclipse.buildId=4.30.0.20231201-1200
java.version=17.0.9
java.vendor=Eclipse Adoptium
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE
Framework arguments: -product org.eclipse.epp.package.java.product
Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.java.product
!ENTRY ch.qos.logback.classic 1 0 2024-11-16 17:42:43.656
!MESSAGE Activated before the state location was initialized. Retry after the state location is initialized.
!ENTRY org.eclipse.core.resources 2 10035 2024-11-16 17:42:47.831
!MESSAGE The workspace exited with unsaved changes in the previous session; refreshing workspace to recover changes.
!ENTRY ch.qos.logback.classic 1 0 2024-11-16 17:42:48.942
!MESSAGE Logback config file: C:\DevCCI\Eclipse\CCI_Java\.metadata\.plugins\org.eclipse.m2e.logback\logback.2.2.1.20231030-1438.xml
!ENTRY org.eclipse.jface 2 0 2024-11-16 17:42:52.794
!MESSAGE Keybinding conflicts occurred. They may interfere with normal accelerator operation.
!SUBENTRY 1 org.eclipse.jface 2 0 2024-11-16 17:42:52.794
!MESSAGE A conflict occurred for CTRL+SHIFT+T:
Binding(CTRL+SHIFT+T,
ParameterizedCommand(Command(org.eclipse.jdt.ui.navigate.open.type,Open Type,
Open a type in a Java editor,
Category(org.eclipse.ui.category.navigate,Navigate,null,true),
WorkbenchHandlerServiceHandler("org.eclipse.jdt.ui.navigate.open.type"),
,,true),null),
org.eclipse.ui.defaultAcceleratorConfiguration,
org.eclipse.ui.contexts.window,,,system)
Binding(CTRL+SHIFT+T,
ParameterizedCommand(Command(org.eclipse.lsp4e.symbolinworkspace,Go to Symbol in Workspace,
,
Category(org.eclipse.lsp4e.category,Language Servers,null,true),
WorkbenchHandlerServiceHandler("org.eclipse.lsp4e.symbolinworkspace"),
,,true),null),
org.eclipse.ui.defaultAcceleratorConfiguration,
org.eclipse.ui.contexts.window,,,system)
!ENTRY org.eclipse.egit.ui 2 0 2024-11-16 17:43:02.156
!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git
user global configuration and to define the default location to store repositories: 'C:\Users\oscar'. If this is
not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and
EGit might behave differently since they see different configuration options.
This warning can be switched off on the Team > Git > Confirmations and Warnings preference page.
!SESSION 2024-11-17 10:58:07.313 -----------------------------------------------
eclipse.buildId=4.30.0.20231201-1200
java.version=17.0.9
java.vendor=Eclipse Adoptium
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE
Framework arguments: -product org.eclipse.epp.package.java.product
Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.java.product
!ENTRY ch.qos.logback.classic 1 0 2024-11-17 11:06:03.500
!MESSAGE Activated before the state location was initialized. Retry after the state location is initialized.
!ENTRY ch.qos.logback.classic 1 0 2024-11-17 11:43:20.542
!MESSAGE Logback config file: C:\DevCCI\Eclipse\CCI_Java\.metadata\.plugins\org.eclipse.m2e.logback\logback.2.2.1.20231030-1438.xml
!ENTRY org.eclipse.jface 2 0 2024-11-17 11:43:34.011
!MESSAGE Keybinding conflicts occurred. They may interfere with normal accelerator operation.
!SUBENTRY 1 org.eclipse.jface 2 0 2024-11-17 11:43:34.011
!MESSAGE A conflict occurred for CTRL+SHIFT+T:
Binding(CTRL+SHIFT+T,
ParameterizedCommand(Command(org.eclipse.jdt.ui.navigate.open.type,Open Type,
Open a type in a Java editor,
Category(org.eclipse.ui.category.navigate,Navigate,null,true),
WorkbenchHandlerServiceHandler("org.eclipse.jdt.ui.navigate.open.type"),
,,true),null),
org.eclipse.ui.defaultAcceleratorConfiguration,
org.eclipse.ui.contexts.window,,,system)
Binding(CTRL+SHIFT+T,
ParameterizedCommand(Command(org.eclipse.lsp4e.symbolinworkspace,Go to Symbol in Workspace,
,
Category(org.eclipse.lsp4e.category,Language Servers,null,true),
WorkbenchHandlerServiceHandler("org.eclipse.lsp4e.symbolinworkspace"),
,,true),null),
org.eclipse.ui.defaultAcceleratorConfiguration,
org.eclipse.ui.contexts.window,,,system)
!ENTRY org.eclipse.egit.ui 2 0 2024-11-17 11:43:46.857
!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git
user global configuration and to define the default location to store repositories: 'C:\Users\oscar'. If this is
not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and
EGit might behave differently since they see different configuration options.
This warning can be switched off on the Team > Git > Confirmations and Warnings preference page.
No preview for this file type
No preview for this file type
No preview for this file type
eclipse.preferences.version=1
platformState=1702038667020
platformState=1702038667028
quickStart=false
tipsAndTricks=true
No preview for this file type
No preview for this file type
<?xml version="1.0" encoding="UTF-8"?>
<session version="1.0">&#x0A;<refactoring comment="Rename resource &apos;week1&apos; to &apos;tp&apos;" description="Rename resource &apos;week1&apos;" flags="7" id="org.eclipse.ltk.core.refactoring.rename.resource" input="/week1" name="tp" stamp="1731429183152" updateReferences="true"/>&#x0A;<refactoring comment="Delete resource &apos;tp&apos;" deleteContents="false" description="Delete resource &apos;tp&apos;" element1="/tp" flags="7" id="org.eclipse.ltk.core.refactoring.delete.resources" resources="1" stamp="1731429332443"/>&#x0A;<refactoring comment="Delete resource &apos;minesweeper&apos;" deleteContents="false" description="Delete resource &apos;minesweeper&apos;" element1="/minesweeper" flags="7" id="org.eclipse.ltk.core.refactoring.delete.resources" resources="1" stamp="1731429428440"/>&#x0A;<refactoring comment="Delete resource &apos;Git&apos;" deleteContents="false" description="Delete resource &apos;Git&apos;" element1="/Git" flags="7" id="org.eclipse.ltk.core.refactoring.delete.resources" resources="1" stamp="1731437390429"/>&#x0A;<refactoring comment="Delete resource &apos;minesweeper&apos;" deleteContents="false" description="Delete resource &apos;minesweeper&apos;" element1="/minesweeper" flags="7" id="org.eclipse.ltk.core.refactoring.delete.resources" resources="1" stamp="1731437886687"/>&#x0A;<refactoring comment="Delete resource &apos;tp&apos;" deleteContents="false" description="Delete resource &apos;tp&apos;" element1="/tp" flags="7" id="org.eclipse.ltk.core.refactoring.delete.resources" resources="1" stamp="1731437892841"/>
<session version="1.0">&#x0A;<refactoring comment="Rename resource &apos;week1&apos; to &apos;tp&apos;" description="Rename resource &apos;week1&apos;" flags="7" id="org.eclipse.ltk.core.refactoring.rename.resource" input="/week1" name="tp" stamp="1731429183152" updateReferences="true"/>&#x0A;<refactoring comment="Delete resource &apos;tp&apos;" deleteContents="false" description="Delete resource &apos;tp&apos;" element1="/tp" flags="7" id="org.eclipse.ltk.core.refactoring.delete.resources" resources="1" stamp="1731429332443"/>&#x0A;<refactoring comment="Delete resource &apos;minesweeper&apos;" deleteContents="false" description="Delete resource &apos;minesweeper&apos;" element1="/minesweeper" flags="7" id="org.eclipse.ltk.core.refactoring.delete.resources" resources="1" stamp="1731429428440"/>&#x0A;<refactoring comment="Delete resource &apos;Git&apos;" deleteContents="false" description="Delete resource &apos;Git&apos;" element1="/Git" flags="7" id="org.eclipse.ltk.core.refactoring.delete.resources" resources="1" stamp="1731437390429"/>&#x0A;<refactoring comment="Delete resource &apos;minesweeper&apos;" deleteContents="false" description="Delete resource &apos;minesweeper&apos;" element1="/minesweeper" flags="7" id="org.eclipse.ltk.core.refactoring.delete.resources" resources="1" stamp="1731437886687"/>&#x0A;<refactoring comment="Delete resource &apos;tp&apos;" deleteContents="false" description="Delete resource &apos;tp&apos;" element1="/tp" flags="7" id="org.eclipse.ltk.core.refactoring.delete.resources" resources="1" stamp="1731437892841"/>&#x0A;<refactoring comment="Delete 2 resources" deleteContents="false" description="Delete 2 resources" element1="/minesweeper" element2="/tp" flags="7" id="org.eclipse.ltk.core.refactoring.delete.resources" resources="2" stamp="1731661998477"/>
</session>
\ No newline at end of file
......@@ -4,3 +4,4 @@
1731437390429 Delete resource 'Git'
1731437886687 Delete resource 'minesweeper'
1731437892841 Delete resource 'tp'
1731661998477 Delete 2 resources
......@@ -24,3 +24,6 @@
2024-11-13 09:37:18,042 [Worker-44: Remove Repositories] WARN org.eclipse.jgit.lib.Repository - close() called when useCnt is already zero for Repository[C:\DevCCI\Git\CCI_Java\.git]
2024-11-13 12:51:23,509 [Worker-1: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read.
2024-11-13 18:48:03,911 [Worker-1: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read.
2024-11-15 09:09:27,255 [Worker-2: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is out-of-date. Trying to update.
2024-11-16 17:43:01,932 [Worker-0: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is out-of-date. Trying to update.
2024-11-17 11:43:46,825 [Worker-0: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read.
#Fri Nov 15 09:08:38 CET 2024
#Sun Nov 17 11:43:16 CET 2024
org.eclipse.core.runtime=2
org.eclipse.platform=4.30.0.v20231201-0110
......@@ -7,7 +7,7 @@ public class Cell {
private boolean isRevealed;
private boolean isMine;
private boolean isSelected;
Color color;
// Color color;
private int row;
private int column;
private boolean active;
......@@ -18,7 +18,7 @@ public class Cell {
public Cell(boolean isMine, int row, int column) {
this.isRevealed = false;
this.isSelected = false;
this.color = Color.GRAY;
// this.color = Color.GRAY;
this.isMine = isMine;
this.row = row;
this.column = column;
......@@ -28,15 +28,15 @@ public class Cell {
this.neighbors = new ArrayList<Cell>();
}
private void refreshColor() {
if (this.isSelected)
this.color = Color.RED;
else if (!this.isRevealed)
this.color = Color.DARK_GRAY;
else if (!this.isRevealed)
this.color = Color.lightGray;
}
// private void refreshColor() {
//
// if (this.isSelected)
// this.color = Color.RED;
// else if (!this.isRevealed)
// this.color = Color.DARK_GRAY;
// else if (!this.isRevealed)
// this.color = Color.lightGray;
// }
public void addNeighbor(Cell cell) {
neighbors.add(cell);
......@@ -52,8 +52,8 @@ public class Cell {
this.isRevealed = status;
this.active = false;
if (status && !this.isMine)
this.color = Color.DARK_GRAY;
// if (status && !this.isMine)
// this.color = Color.DARK_GRAY;
}
......@@ -87,15 +87,15 @@ public class Cell {
return isSelected;
}
public Color getColor() {
if (!isRevealed)
refreshColor();
return color;
}
public void setColor(Color color) {
this.color = color;
}
// public Color getColor() {
// if (!isRevealed)
// refreshColor();
// return color;
// }
//
// public void setColor(Color color) {
// this.color = color;
// }
public boolean isRevealed() {
return isRevealed;
......
......@@ -15,28 +15,34 @@ public class Minesweeper {
private int nbBlanks;
private int nbRevealed;
double difficulte;
double difficulty;
Color colorSweeper = Color.RED;
private ArrayList<ArrayList<Cell>> board;
public Minesweeper() {
resetGame(0.25);
}
public void resetGame(double difficulty) {
this.nbColumns = 15;
this.nbLines = 15;
// this.nbColumns = 3;
// this.nbLines = 3;
this.difficulte = 0.2;
this.difficulty = difficulty;
this.score = 0;
this.board = new ArrayList<ArrayList<Cell>>();
this.gameOver = false;
this.gameWin = false;
this.nbMines = 0;
this.nbRevealed = 0;
this.board = new ArrayList<ArrayList<Cell>>();
for (int row = 0; row < this.nbLines; row++) {
this.board.add(new ArrayList<Cell>());
for (int column = 0; column < this.nbColumns; column++) {
boolean isMine = ((int) (Math.random() + difficulte)) == 1;
boolean isMine = ((int) (Math.random() + difficulty)) == 1;
Cell cell = new Cell(isMine, row + 1, column + 1);
this.board.get(row).add(cell);
if (isMine)
......@@ -53,7 +59,6 @@ public class Minesweeper {
for (Cell cell : row) {
addAllNeighbors(cell);
}
System.out.println("neighbors set");
}
private void addAllNeighbors(Cell cell) {
......@@ -187,4 +192,8 @@ public class Minesweeper {
return getCell(line, column).isFlagged();
}
public double getDifficulty() {
return this.difficulty;
}
}
package tp6.v3;
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
......@@ -24,35 +26,43 @@ public class MinesweeperFrame extends JFrame {
menu = new JMenu("menu");
size = new JMenu("size in pixel");
difficulte = new JMenu("Mines/no mines");
color = new JMenu("Color");
// size = new JMenu("size in pixel");
difficulte = new JMenu("difficulty");
color = new JMenu("color");
// size1 = new JMenuItem("500");
// size2 = new JMenuItem("700");
// size3 = new JMenuItem("1000");
//
// size.add(size1);
// size.add(size2);
// size.add(size3);
size1 = new JMenuItem("500");
size2 = new JMenuItem("700");
size3 = new JMenuItem("1000");
diff1 = new JMenuItem("20% bombs");
diff1.addActionListener(e -> this.minesweeper.resetGame(0.20));
diff2 = new JMenuItem("35% bombs");
diff2.addActionListener(e -> this.minesweeper.resetGame(0.35));
diff3 = new JMenuItem("50% bombs");
diff3.addActionListener(e -> this.minesweeper.resetGame(0.50));
size.add(size1);
size.add(size2);
size.add(size3);
diff1 = new JMenuItem("50/50");
diff2 = new JMenuItem("25/75");
diff3 = new JMenuItem("75/25");
difficulte.add(diff1);
difficulte.add(diff2);
difficulte.add(diff3);
color1 = new JMenuItem("red");
color1.addActionListener(e -> this.minesweeperPanel.setColorSweeper(Color.RED));
color2 = new JMenuItem("blue");
color3 = new JMenuItem("black");
color2.addActionListener(e -> this.minesweeperPanel.setColorSweeper(Color.BLUE));
color3 = new JMenuItem("yellow");
color3.addActionListener(e -> this.minesweeperPanel.setColorSweeper(Color.YELLOW));
color.add(color1);
color.add(color2);
color.add(color3);
menu.add(size);
// menu.add(size);
menu.add(difficulte);
menu.add(color);
......
......@@ -5,8 +5,6 @@ import java.awt.Dimension;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.util.Scanner;
import javax.swing.JFrame;
import javax.swing.JMenu;
......@@ -15,7 +13,7 @@ import javax.swing.JMenuItem;
import javax.swing.JPanel;
@SuppressWarnings("serial")
public class MinesweeperPanel extends JPanel implements MinesweeperPanelable {
public class MinesweeperPanel extends JPanel {
Minesweeper minesweeper;
int spaceHor;
int spaceVert;
......@@ -26,6 +24,7 @@ public class MinesweeperPanel extends JPanel implements MinesweeperPanelable {
int carreWidth;
int carreHeight;
int spaceBorder;
private Color colorSweeper;
static JMenuBar mb;
......@@ -41,6 +40,7 @@ public class MinesweeperPanel extends JPanel implements MinesweeperPanelable {
addMouseListener(new PanelMouseListener(this));
addMouseMotionListener(new PanelMouseListener(this));
spaceBorder = 20;
this.colorSweeper = Color.RED;
}
@Override
......@@ -58,9 +58,6 @@ public class MinesweeperPanel extends JPanel implements MinesweeperPanelable {
this.spaceHor = carreWidth / nbColumns;
this.spaceVert = carreHeight / nbRows;
int lineEndH = carreHeight + getBoardBorder();
int lineEndV = carreWidth + getBoardBorder();
for (int idxRow = 1; idxRow <= this.minesweeper.getNbLines(); idxRow++) {
for (int idxCol = 1; idxCol <= this.minesweeper.getNbColumns(); idxCol++) {
Cell tmp = this.minesweeper.getCell(idxRow, idxCol);
......@@ -71,9 +68,16 @@ public class MinesweeperPanel extends JPanel implements MinesweeperPanelable {
}
// show score
String banner = "Difficulty : " + this.minesweeper.getDifficulty() + " Score : "
+ this.minesweeper.getScore();
int fontSize = spaceBorder - 6;
Font font = new Font("Ariel", Font.BOLD, fontSize);
FontMetrics metricsBanner = g.getFontMetrics(font);
int xBanner = (getWidth() - metricsBanner.stringWidth(banner)) / 2;
g.setColor(Color.darkGray);
g.setFont(new Font("Ariel", Font.BOLD, spaceBorder - 3));
g.drawString("Score : " + this.minesweeper.getScore(), (getWidth() / 2) - 40, (spaceBorder - 3));
g.setFont(font);
g.drawString(banner, xBanner, (spaceBorder - 3));
if (this.minesweeper.isGameOver())
drawGameOver(g);
......@@ -96,6 +100,7 @@ public class MinesweeperPanel extends JPanel implements MinesweeperPanelable {
g.setFont(font);
g.drawString(gg, xGame, fontSize * 3);
g.drawString(score, xScore, (fontSize * 4) - getHeight() / 22);
System.out.println("You've won! Choose a difficulty to restart the game.");
}
......@@ -115,24 +120,25 @@ public class MinesweeperPanel extends JPanel implements MinesweeperPanelable {
g.setFont(font);
g.drawString(gg, xGame, fontSize * 3);
g.drawString(score, xScore, (fontSize * 4) - getHeight() / 22);
}
@Deprecated
public void drawCell(Graphics g, int line, int column) {
g.setColor(Color.BLACK);
g.drawRect(getCellX(column), getCellY(line), getCellWidth(), getCellHeight());
Cell tmp = this.minesweeper.getCell(line, column);
g.setColor(tmp.getColor());
g.fillRect(getCellX(column), getCellY(line), getCellWidth(), getCellHeight());
if (tmp.getIsRevealed() && tmp.getIsMine()) {
int sizeBomb = 25;
g.setColor(Color.BLACK);
g.fillOval(getCellX(column) + (getCellWidth() / 2) - (sizeBomb / 2),
getCellX(line) + (getCellHeight() / 2) - (sizeBomb / 2), sizeBomb, sizeBomb);
}
}
System.out.println("You've lost! Choose a difficulty to restart the game.");
}
// @Deprecated
// public void drawCell(Graphics g, int line, int column) {
//
// g.setColor(Color.BLACK);
// g.drawRect(getCellX(column), getCellY(line), getCellWidth(), getCellHeight());
// Cell tmp = this.minesweeper.getCell(line, column);
// g.setColor(tmp.getColor());
// g.fillRect(getCellX(column), getCellY(line), getCellWidth(), getCellHeight());
//
// if (tmp.getIsRevealed() && tmp.getIsMine()) {
// int sizeBomb = 25;
// g.setColor(Color.BLACK);
// g.fillOval(getCellX(column) + (getCellWidth() / 2) - (sizeBomb / 2),
// getCellX(line) + (getCellHeight() / 2) - (sizeBomb / 2), sizeBomb, sizeBomb);
// }
// }
public void drawCell(Graphics g, Cell tmp) {
......@@ -151,7 +157,7 @@ public class MinesweeperPanel extends JPanel implements MinesweeperPanelable {
g.fillOval(xTmp + (getCellWidth() / 2) - (sizeBomb / 2), yTmp + (getCellHeight() / 2) - (sizeBomb / 2),
sizeBomb, sizeBomb);
} else if (tmp.isSelected()) {
g.setColor(Color.RED);
g.setColor(colorSweeper);
g.fillRect(xTmp, yTmp, getCellWidth(), getCellHeight());
} else if (tmp.toString().equals("B")) {
g.setColor(Color.RED);
......@@ -216,4 +222,8 @@ public class MinesweeperPanel extends JPanel implements MinesweeperPanelable {
return false;
}
public void setColorSweeper(Color colorSweeper) {
this.colorSweeper = colorSweeper;
}
}
package tp6.v3;
import java.util.ArrayList;
public class Position {
private int line;
private int column;
private ArrayList<Position> neighbors;
public Position(int line, int column) {
super();
this.line = line;
this.column = column;
this.neighbors = new ArrayList<Position>();
setNeighbors();
}
private void setNeighbors() {
for (int ln = line - 1; ln < line + 1; ln++) {
for (int cmn = column - 1; cmn < column + 1; cmn++) {
if (ln != line && cmn != column)
this.neighbors.add(new Position(ln, cmn));
}
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment