Java 精彩小游戏代码,点燃你的编程激情!28


作为一名编程爱好者,编写简单有趣的小游戏既是一项挑战,也是一种乐趣。Java 作为一种广泛使用的编程语言,提供了完善的开发环境和丰富的库,使初学者和高级程序员都能轻松创建各种小游戏。

1. 井字棋

井字棋是一款经典且易于上手的小游戏,仅需几个变量和条件语句即可实现。它包含一个 3x3 的网格,玩家轮流在网格中放置 X 或 O,率先形成水平、垂直或对角线上的三个连续标记即可获胜。```java
import ;
public class TicTacToe {
private static final char X = 'X';
private static final char O = 'O';
private static final char EMPTY = ' ';
private static char[][] board = new char[3][3];
private static char currentPlayer = X;
public static void main(String[] args) {
initBoard();
Scanner scanner = new Scanner();
while (true) {
displayBoard();
("Player " + currentPlayer + ", enter row and column (1-3): ");
int row = () - 1;
int col = () - 1;
if (board[row][col] == EMPTY) {
board[row][col] = currentPlayer;
if (checkWin(currentPlayer)) {
displayBoard();
("Player " + currentPlayer + " wins!");
break;
}
currentPlayer = currentPlayer == X ? O : X;
} else {
("Invalid move. Try again.");
}
}
();
}
private static void initBoard() {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
board[i][j] = EMPTY;
}
}
}
private static void displayBoard() {
for (char[] row : board) {
for (char c : row) {
(c + " ");
}
();
}
}
private static boolean checkWin(char player) {
// Check rows
for (char[] row : board) {
if (row[0] == player && row[1] == player && row[2] == player) {
return true;
}
}
// Check columns
for (int i = 0; i < 3; i++) {
if (board[0][i] == player && board[1][i] == player && board[2][i] == player) {
return true;
}
}
// Check diagonals
if (board[0][0] == player && board[1][1] == player && board[2][2] == player) {
return true;
}
if (board[0][2] == player && board[1][1] == player && board[2][0] == player) {
return true;
}
return false;
}
}
```

2. 猜数字游戏

猜数字游戏是一款简单的数学游戏,计算机生成一个随机数,玩家需要通过猜测来找出这个数字。该游戏涉及随机数生成以及玩家输入的比较和处理。```java
import ;
import ;
public class GuessNumberGame {
public static void main(String[] args) {
Random random = new Random();
int number = (100) + 1;
Scanner scanner = new Scanner();
("Guess a number between 1 and 100: ");
while (true) {
int guess = ();
if (guess == number) {
("You guessed it!");
break;
} else if (guess < number) {
("Your guess is too low. Try again.");
} else {
("Your guess is too high. Try again.");
}
}
();
}
}
```

3. 贪吃蛇游戏

贪吃蛇游戏是经典且令人上瘾的 arcade 游戏。它涉及一个由一个或多个部分组成的蛇,该蛇在网格中移动,吃食物并增长。该游戏需要利用数组、循环和条件语句来跟踪蛇的位置和移动。```java
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
public class SnakeGame extends JPanel implements KeyListener {
private static final int WIDTH = 400;
private static final int HEIGHT = 400;
private static final int UNIT_SIZE = 10;
private ArrayList snake;
private Food food;
private int direction;
private boolean running;
public SnakeGame() {
setPreferredSize(new Dimension(WIDTH, HEIGHT));
setBackground();
setFocusable(true);
addKeyListener(this);
initGame();
}
public void initGame() {
snake = new ArrayList();
(new SnakePart(WIDTH / 2, HEIGHT / 2));
(new SnakePart(WIDTH / 2 - UNIT_SIZE, HEIGHT / 2));
food = new Food();
direction = KeyEvent.VK_RIGHT;
running = true;
}
@Override
public void paintComponent(Graphics g) {
(g);
for (SnakePart part : snake) {
();
(part.x, part.y, UNIT_SIZE, UNIT_SIZE);
}
();
(food.x, food.y, UNIT_SIZE, UNIT_SIZE);
}
@Override
public void keyPressed(KeyEvent e) {
switch (()) {
case KeyEvent.VK_RIGHT:
if (direction != KeyEvent.VK_LEFT) {
direction = KeyEvent.VK_RIGHT;
}
break;
case KeyEvent.VK_LEFT:
if (direction != KeyEvent.VK_RIGHT) {
direction = KeyEvent.VK_LEFT;
}
break;
case KeyEvent.VK_UP:
if (direction != KeyEvent.VK_DOWN) {
direction = KeyEvent.VK_UP;
}
break;
case KeyEvent.VK_DOWN:
if (direction != KeyEvent.VK_UP) {
direction = KeyEvent.VK_DOWN;
}
break;
}
}
@Override
public void keyReleased(KeyEvent e) { }
@Override
public void keyTyped(KeyEvent e) { }
public void update() {
if (!running) {
return;
}
// Move the snake
SnakePart head = (0);
int x = head.x;
int y = head.y;
switch (direction) {
case KeyEvent.VK_RIGHT:
x += UNIT_SIZE;
break;
case KeyEvent.VK_LEFT:
x -= UNIT_SIZE;
break;
case KeyEvent.VK_UP:
y -= UNIT_SIZE;
break;
case KeyEvent.VK_DOWN:
y += UNIT_SIZE;
break;
}
// Check if the snake has eaten the food
if (head.x == food.x && head.y == food.y) {
(new SnakePart(food.x, food.y));
food = new Food();
}
// Check if the snake has hit itself or the walls
if (x < 0 || x >= WIDTH || y < 0 || y >= HEIGHT || (1, ()).stream().anyMatch(p -> p.x == x && p.y == y)) {
running = false;
}
// Move the snake's body
for (int i = () - 1; i > 0; i--) {
SnakePart p = (i);
(

2024-10-12


上一篇:在 Java 中高效地判断字符串相等

下一篇:将 Java 数组转换为集合:全面指南