void setup() {
size(500, 500);
}
void draw() {
background(#FFFFF2);
line(0, 100, 500, 100);
line(0, 200, 500, 200);
line(0, 300, 500, 300);
line(0, 400, 500, 400);
line(100, 0, 100, 500);
line(200, 0, 200, 500);
line(300, 0, 300, 500);
line(400, 0, 400, 500);
fill(0);
textSize(50);
textAlign(CENTER, CENTER);
for (int y=50; y<=450; y+=100) {
text("1", 50, y);
text("1", 150, y);
text("1", 250, y);
text("1", 350, y);
text("1", 450, y);
}
}
---------------
002.
//int [] used = new int[26];
int [][] table = new int[5][5];
void setup() {
size(500, 600);
textSize(30);
textAlign(CENTER, CENTER);
int []numbers ={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25};
for(int i = numbers.length - 1; i>0; i--){
int j = int(random(i+1));
int temp = numbers[i];
numbers[i] = numbers[j];
numbers[j] = temp;
}
int index=0;
for (int i=0; i<5; i++) {
for (int j=0; j<5; j++) {
//int now = int(random(1, 26));
//while (used[now]==1) now = int(random(1, 26));
//table[i][j] = now;
//used[now] = 1;
table[i][j] = numbers[index++];
}
}
startT=millis();
}
int startT = 0;
int [][] pressed = new int [5][5];
void draw() {
background(#FFFFF2);
for (int i=0; i<5; i++) {
for (int j=0; j<5; j++) {
if (pressed[i][j]==1) fill(128);
else fill(225);
rect(j*100, i*100, 100, 100);
fill(0);
text(""+table[i][j], 50+j*100, 50+i*100);
}
}
text("you used\n[ "+nf((millis()-startT)/1000.0, 3, 1)+" ]\nseconds", 250, 550);
}
int want = 1;
void mousePressed() {
int i = mouseY/100, j= mouseX/100;
if (i>= 0&& i<5 && j>=0 && j<5) {
if (table[i][j]==want) {
pressed[i][j]=1;
want++;
}
}
}
------
003.
int[][] table = new int[5][5]; // 儲存格子的狀態
boolean[][] revealed = new boolean[5][5]; // 儲存格子是否已被揭露
int numMines = 5; // 地雷數量
boolean gameOver = false; // 遊戲是否結束
void setup() {
size(500, 600);
textSize(30);
textAlign(CENTER, CENTER);
// 初始化地雷表
placeMines();
}
void draw() {
background(#FFFFF2);
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
if (revealed[i][j]) {
if (table[i][j] == -1) {
fill(255, 0, 0); // 地雷顏色
rect(j * 100, i * 100, 100, 100);
fill(0);
text("💣", 50 + j * 100, 50 + i * 100);
} else {
fill(255); // 安全格子顏色
rect(j * 100, i * 100, 100, 100);
fill(0);
text("" + table[i][j], 50 + j * 100, 50 + i * 100);
}
} else {
fill(225); // 未揭露格子顏色
rect(j * 100, i * 100, 100, 100);
}
}
}
if (gameOver) {
fill(0);
text("Game Over!", 250, 550);
}
}
void mousePressed() {
int i = mouseY / 100, j = mouseX / 100;
if (i >= 0 && i < 5 && j >= 0 && j < 5 && !gameOver) {
if (table[i][j] == -1) {
revealAll(); // 揭露所有格子
gameOver = true; // 點擊到地雷,結束遊戲
} else {
reveal(i, j); // 揭露安全格子
}
}
}
// 隨機放置地雷
void placeMines() {
int minesPlaced = 0;
while (minesPlaced < numMines) {
int i = int(random(5));
int j = int(random(5));
if (table[i][j] != -1) {
table[i][j] = -1; // 放置地雷
minesPlaced++;
incrementNeighborCounts(i, j); // 更新周圍格子的地雷數
}
}
}
// 更新周圍格子的地雷數
void incrementNeighborCounts(int x, int y) {
for (int i = -1; i <= 1; i++) {
for (int j = -1; j <= 1; j++) {
if (x + i >= 0 && x + i < 5 && y + j >= 0 && y + j < 5 && table[x + i][y + j] != -1) {
table[x + i][y + j]++;
}
}
}
}
// 揭露格子
void reveal(int x, int y) {
if (x < 0 || x >= 5 || y < 0 || y >= 5 || revealed[x][y]) return;
revealed[x][y] = true; // 揭露格子
// 如果該格子是0,則遞歸揭露鄰近格子
if (table[x][y] == 0) {
for (int i = -1; i <= 1; i++) {
for (int j = -1; j <= 1; j++) {
reveal(x + i, y + j);
}
}
}
}
// 揭露所有格子
void revealAll() {
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
revealed[i][j] = true; // 揭露所有格子
}
}
}
沒有留言:
張貼留言