近年来,计算机技术迅猛发展,网络游戏的崛起也为人们的生活注入了新的活力,让无数年轻人沉迷于其中。如果你也是一个冒险家,那么这篇文章就为你准备了一些小但趣味无穷的Java小游戏源代码,带你进入编程的世界,从中不仅能体验到丰富的游戏乐趣,还能够进行代码的学习和修改,加强自己的编程能力。
1.扫雷游戏
扫雷游戏是一个经典的大众游戏。它的游戏规则非常简单,玩家需要在规定的时间内找出地雷,避免触雷而失败。下面我们就为大家提供一个Java版本的扫雷游戏源代码:
`import java.awt.*;`
`import java.awt.event.*;`
`import javax.swing.*;`
`import java.util.Random;`
`public class Minesweeper extends JFrame implements ActionListener`
`{`
`JMenuBar menubar;`
`JMenu game, help;`
`JMenuItem new_game, quit, instructions;`
`JPanel gamezone;`
`JLabel statusbar;`
`int n=10; //棋盘大小`
`int p=10; //雷的数量`
`int[][] board, open;`
`JButton[][] grid;`
`public Minesweeper()`
`{`
`board = new int[n][n];`
`open = new int[n][n];`
`grid = new JButton[n][n];`
`menubar = new JMenuBar();`
`game = new JMenu("Game");`
`help = new JMenu("Help");`
`new_game = new JMenuItem("New Game");`
`quit = new JMenuItem("Quit");`
`instructions = new JMenuItem("Instructions");`
`gamezone = new JPanel(new GridLayout(n,n));`
`statusbar = new JLabel(" Mines: " + p);`
`Random rand = new Random();`
`for(int i=0; i
`{`
`int r=rand.nextInt(n);`
`int c=rand.nextInt(n);`
`if(board[r][c]!=-1)`
`{`
`board[r][c]=-1;`
`i++;`
`}`
`}`
`for(int i=0; i `{` `for(int j=0; j `{` `grid[i][j] = new JButton();` `grid[i][j].addActionListener(this);` `gamezone.add(grid[i][j]);` `if(board[i][j]==-1)` `{` `grid[i][j].setToolTipText("X");` `}` `}` `}` `game.add(new_game);` `game.add(quit);` `help.add(instructions);` `menubar.add(game);` `menubar.add(help);` `setLayout(new BorderLayout());` `add(menubar, BorderLayout.NORTH);` `add(gamezone, BorderLayout.CENTER);` `add(statusbar, BorderLayout.SOUTH);` `setSize(new Dimension(300,250));` `setVisible(true);` `setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);` `}` `public static void main(String[] args)` `{` `new Minesweeper();` `}` `public void actionPerformed(ActionEvent e)` `{` `for(int i=0; i `{` `for(int j=0; j `{` `if(e.getSource()==grid[i][j])` `{` `if(board[i][j]==-1)` `{` `statusbar.setText(" You lost!");` `for(int a=0; a `{` `for(int b=0; b `{` `if(board[a][b]==-1)` ` {` `grid[a][b].setText("X");` ` }` `}` `}` `}` `else` `{` `open[i][j]=1;` `grid[i][j].setEnabled(false);` `int c=0;` `for(int a=0; a `{` `for(int b=0; b `{` `if(open[a][b]==1)` `{` `c++;` `}` `}` `}` `if(c==n*n-p)` `{` `statusbar.setText(" You win!");` `}` `else` `{` `statusbar.setText(" Mines: " + (p-c));` `if(i>0 && j>0 && board[i-1][j-1]==-1) count(j-1,i-1);` `if(j>0 && board[i][j-1]==-1) count(j-1,i);` `if(i `if(i>0 && board[i-1][j]==-1) count(j,i-1);` `if(i `if(i>0 && j `if(j `if(i `}` `}` `}` `}` `}` `}` `void count(int x, int y)` `{` `grid[y][x].setEnabled(false);` `if(x>0 && y>0 && board[y-1][x-1]!=-1 && open[y-1][x-1]==0) open[y-1][x-1]=1;` `if(x `if(y>0 && board[y-1][x]!=-1 && open[y-1][x]==0) open[y-1][x]=1;` `if(x>0 && board[y][x-1]!=-1 && open[y][x-1]==0) open[y][x-1]=1;` `if(x `if(y `if(y `if(y `}` `}` 2.贪吃蛇游戏 贪吃蛇游戏是大家非常熟悉的游戏,它以小蛇吃食物,长大变长为基本规律,下面我们将为大家介绍Java版本的贪吃蛇游戏源代码: `import java.awt.Color;` `import java.awt.Graphics;` `import java.awt.Point;` `import java.awt.event.KeyEvent;` `import java.awt.event.KeyListener;` `import java.util.LinkedList;` `import java.util.Random;` `import javax.swing.JFrame;` `import javax.swing.JPanel;` `public class Snake implements Runnable, KeyListener` `{` `public enum Direction {up, down, left, right}` `public static Snake snake;` `public JFrame jframe;` `public RenderPanel renderPanel;` `public LinkedList `public static final int width = 600;` `public static final int height = 600;` `public static final int scale = 10;` `public boolean running = false;` `public Direction direction;` `public int score;` `public Point food;` `public Random random;` `public Snake()` `{` `jframe = new JFrame("Snake");` `renderPanel = new RenderPanel();` `random = new Random();` `jframe.setVisible(true);` `jframe.setSize(width, height);` `jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);` `jframe.add(renderPanel);` `jframe.addKeyListener(this);` `startGame();` `}` `public void startGame()` `{` `running = true;` `direction = Direction.right;` `score = 0;` `snakeParts.clear();` `snakeParts.add(new Point(0, 2));` `snakeParts.add(new Point(0, 1));` `snakeParts.add(new Point(0, 0));` `generateFood();` `new Thread(this).start();` `}` `public void generateFood()` `{` `food = new Point(random.nextInt(width / scale), random.nextInt(height / scale));` `}` `public boolean collision(Point point)` `{` `if (snakeParts.contains(point)) return true;` `if (point.x < 0 || point.x >= width / scale) return true;` `if (point.y < 0 || point.y >= height / scale) return true;` `return false;` `}` `public void run()` `{` `while (running)` `{` `try` `{` `Thread.sleep(50);` `}` `catch (Exception e)` `{` `e.printStackTrace();` `}` `renderPanel.repaint();` `}` `}` `public void keyPressed(KeyEvent e)` `{` `if (e.getKeyCode() == KeyEvent.VK_A && direction != Direction.right) direction = Direction.left;` `if (e.getKeyCode() == KeyEvent.VK_D && direction != Direction.left) direction = Direction.right;` `if (e.getKeyCode() == KeyEvent.VK_W && direction != Direction.down) direction = Direction.up;` `if (e.getKeyCode() == KeyEvent.VK_S && direction != Direction.up) direction = Direction.down;` `}` `public void keyTyped(KeyEvent e) {}` `public void keyReleased(KeyEvent e) {}` `public static void main(String[] args)` `{` `snake = new Snake();` `}` `public class RenderPanel extends JPanel` `{` `public void paintComponent(Graphics g)` `{` `super.paintComponent(g);` `g.setColor(Color.black);` `g.fillRect(0, 0, width, height);` `Snake snake = Snake.snake;` `g.setColor(Color.green);` `for (Point point : snake.snakeParts)` `{` `g.fillRect(point.x * scale, point.y * scale, scale, scale);` `}` `g.fillRect(snake.food.x * scale, snake.food.y * scale, scale, scale);` `g.setColor(Color.white);` `g.drawString("Score: " + snake.score, 10, 20);` `}` `}` `}` 3.弹球小游戏 弹球小游戏属于球类游戏的一种,简单易上手,趣味横生。下面我们将为大家介绍Java版本的弹球小游戏源代码: `import java.awt.Color;` `import java.awt.Dimension;` `import java.awt.Graphics;` `import java.awt.Toolkit;` `import java.awt.event.ActionEvent;` `import java.awt.event.ActionListener;` `import java.awt.event.KeyEvent;` `import java.awt.event.KeyListener;` `import java.util.Random;` `import javax.swing.JOptionPane;` `import javax.swing.JPanel;` `import javax.swing.Timer;` `public class PongPanel extends JPanel implements ActionListener, KeyListener` `{` `private static final long serialVersionUID = 1;` `private int width = 700;` `private int height = 500;` `private int paddle1Y = 250;` `private int paddle2Y = 250;` `private int ballX = 350;` `private int ballY = 250;` `private int ballXDirection = 1;` `private int ballYDirection = -1;` `private Timer timer;` `public PongPanel()` `{` `setBackground(Color.BLACK);` `setPreferredSize(new Dimension(width, height));` `addKeyListener(this);` `setFocusable(true);` `timer = new Timer(8, this);` `timer.start();` `}` `public void paintComponent(Graphics g)` `{` `super.paintComponent(g);` `g.setColor(Color.WHITE);` `g.fillRect(0, paddle1Y - 50, 5, 100);` `g.fillRect(getWidth() - 5, paddle2Y - 50, 5, 100);` `g.fillOval(ballX - 5, ballY - 5, 10, 10);` `}` `public void actionPerformed(ActionEvent e)` `{` `int paddle1Top = paddle1Y - 50;` `int paddle1Bottom = paddle1Y + 50;` `int paddle2Top = paddle2Y - 50;` `int paddle2Bottom = paddle2Y + 50;` `ballX += ballXDirection;` `ballY += ballYDirection;` `if (ballY < 0 || ballY > getHeight()) ballYDirection *= -1;` `if (ballX < 0)` `{` `if (ballY >= paddle1Top && ballY <= paddle1Bottom) ballXDirection *= -1;` `else` `{` `timer.stop();` `JOptionPane.showMessageDialog(this, "Player 2 wins!");` `System.exit(0);` `}` `}` `if (ballX > getWidth())` `{` `if (ballY >= paddle2Top && ballY <= paddle2Bottom) ballXDirection *= -1;` `else` `{` `timer.stop();` `JOptionPane.showMessageDialog(this, "Player 1 wins!");` `System.exit(0);` `}` `}` `repaint();` `}` `public void keyPressed(KeyEvent e)` `{` `int keyCode = e.getKeyCode();` `if (keyCode == KeyEvent.VK_UP) paddle1Y -= 10;` `if (keyCode == KeyEvent.VK_DOWN) paddle1Y += 10;` `if (keyCode == KeyEvent.VK_W) paddle2Y -= 10;` `if (keyCode == KeyEvent.VK_S) paddle2Y += 10;` `if (paddle1Y < 50) paddle1Y = 50;` `if (paddle1Y > 450) paddle1Y = 450;` `if (paddle2Y < 50) paddle2Y = 50;` `if (paddle2Y > 450) paddle2Y = 450;` `}` `public void keyTyped(KeyEvent e) {}` `public void keyReleased(KeyEvent e) {}` `public static void main(String[] args)` `{` `javax.swing.JFrame frame = new javax.swing.JFrame("Pong");` `frame.getContentPane().add(new PongPanel());` `frame.pack();` `frame.setVisible(true);` `frame.setLocationRelativeTo(null);` `frame.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);` `}` `}` 总之,Java小游戏源代码是一种非常热门的编程素材之一,无论是初学者还是高手,都能够从中提高自己的编程技能,欢迎大家来进行尝试。