Minesweeper

Hallo liebe Community,

ich studiere Wirtschaftsinformatik und müsste eine Spiel programmieren, das jeder kennen sollte nämlich Minesweeper. Ich sollte das Spiel mithilfe IntelliJ programmieren. Ich habe im Internet leider keinen Code gefunden der funktionierte. Auf Fiverr wurde ich leider auch über den Tisch gezogen. Ich würde mich sehr darüber, wenn einer von euch mir den Code schicken könnte. Natürlich würde ich ihn entlohnen mit einer kleinen Summe als Dankeschön.

Mit freundlichen Grüßen

Racoon

Moin, können wir das Thema nicht hier öffentlich besprechen? Private „Machenschaften“ via PN gefallen mir nicht so…

(Beitrag wurde vom Autor zurückgezogen und wird automatisch in 2400 Stunden gelöscht, sofern dieser Beitrag nicht gemeldet wird)

Ok, hier mal der Anfang:

import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;

public class Minesweeper extends JFrame implements ActionListener {
	private static final long serialVersionUID = 1L;

	public static class Entity {
		public char c = ' ';
		public boolean open = false;
		public JButton button = new JButton(String.valueOf(c));

		public void updateChar(char new_c) {
			c = new_c;
		}

		public void updateBackground() {
			if (!open) {
				button.setBackground(Color.lightGray);
				button.setText(String.valueOf(' '));
			} else {
				if (c == ' ')
					button.setBackground(Color.white);
				else if (c == 'x')
					button.setBackground(Color.red);
				else
					button.setBackground(Color.yellow);
				button.setText(String.valueOf(c));
			}
		}
	}

	private static final int n = 10;
	private static final float f = 0.1f;
	private Entity[][] es = new Entity[n][n];

	public Minesweeper() {
		this.setTitle("Minesweeper");
		this.setLayout(new GridLayout(n, n));
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < n; j++) {
				es[i][j] = new Entity();
				if (Math.random() <= f) {
					es[i][j].updateChar('x');
				}
				this.add(es[i][j].button);
			}
		}
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < n; j++) {
				if (es[i][j].c == ' ' && sweeps(i, j) > 0) {
					es[i][j].updateChar((char) ('0' + sweeps(i, j)));
				}
				es[i][j].updateBackground();
				es[i][j].button.addActionListener(this);
			}
		}
		this.pack();
		this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		this.setVisible(true);
	}

	private int sweeps(int x, int y) {
		int sweeps = 0;
		for (int i = x - 1; i <= x + 1; i++) {
			for (int j = y - 1; j <= y + 1; j++) {
				if (i >= 0 && j >= 0 && i < n && j < n) {
					if (es[i][j].c == 'x') {
						sweeps++;
					}
				}
			}
		}
		return sweeps;
	}

	private void open(int x, int y) {
		es[x][y].open = true;
		es[x][y].updateBackground();
		for (int i = x - 1; i <= x + 1; i++) {
			for (int j = y - 1; j <= y + 1; j++) {
				if (i >= 0 && j >= 0 && i < n && j < n) {
					if (!es[i][j].open && es[i][j].c == ' ') {
						open(i, j);
					}
				}
			}
		}
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		int x = 0;
		int y = 0;
		JButton s = (JButton) e.getSource();
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < n; j++) {
				if (s == es[i][j].button) {
					x = i;
					y = j;
				}
			}
		}
		Entity entity = es[x][y];
		if (entity.c == 'x') {
			System.out.println("verloren");
			es[x][y].updateBackground();
			// TODO

		} else {
			open(x, y);
		}
	}

	public static void main(String[] args) {
		new Minesweeper();
	}
}

Bei TODO ist noch etwas zu tun. Das Ganze sieht so aus:

min

Es könnte sein, dass ich noch etwas vergessen hab.

(Beitrag wurde vom Autor zurückgezogen und wird automatisch in 2400 Stunden gelöscht, sofern dieser Beitrag nicht gemeldet wird)

class Prog bitte entfernen. :wink:

e/ Denn die Klasse heißt ja Minesweeper.

In der Tat Sie lagen richtig vielen herzlichen Dank. Haben Sie auch eine Lösung wie man dies originalgetreu macht. Dies war, aber sehr hilfreich.

Mit freundlichen Grüßen

? Ich verstehe nicht richtig. :wink:

Wie ist denn die Aufgabenstellung, was hast du bis jetzt, was verstehst du noch nicht?

e/ Wenn sich das „originalgetreu“ auf die Regeln von Minesweeper bezieht - ich verstehe das Spiel auch nicht genau.

Hilfe zur Selbsthilfe wäre besser gewesen. So grenzt das an Betrug.

Das grenzt nicht an Betrug, das ist Betrug, aber erstens ist das wohl „normal“, zweitens bin ich gerade zu faul, zu schauen, ob das vielleicht ein Fake-Account ist, drittens können sich diejenigen, die ehrlich sind, ja noch der naiven Hoffnung hingeben, dass der Tutor eine kurze Websuche machen wird, und dann diesen Thread findet, und die entsprechenden Konsequenzen zieht. Es mag zwar im ersten Moment schwierig erscheinen, weil eine Websuche nach java minesweeper über 700000 Ergebnisse liefert, aber ich habe in solchen Fällen gute Erfahrungen damit gemacht, nach Kommentaren und Variablennamen zu suchen…

1 Like