Java swing写一个贪吃蛇

学习Java的时候,我用swing写了一个贪吃蛇。运行效果如图:

 

 

 

下面给出程序完整源代码,可以直接复制粘贴到你的机子上运行(注意文件名要改成Main.java)。

关于代码有任何问题可以留言我,我会尽力解答。

 

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;


public class Main extends JFrame{
	private static GamePanel p1 = new GamePanel();//创建游戏面板
	private static InformationPanel p2 = new InformationPanel();//创建信息面板

	public Main(){//配置框架的布局
		setLayout(new BorderLayout());
		add(p1,BorderLayout.CENTER);
		add(p2,BorderLayout.EAST);
	}

	public static void main(String[] args){
		JFrame frame = new Main();//新建框架

		//配置框架
		frame.setTitle("贪吃蛇");
		frame.setSize(1100, 800);
		frame.setVisible(true);
		frame.setResizable(false);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setLocationRelativeTo(null);

		//新建线程
		Thread thread1 = new Thread(p1);
		thread1.start();
		Thread thread2 = new Thread(p2);
		thread2.start();
	}
}

class GamePanel extends JPanel implements Runnable{
	public static final int PER_UNIT_LENGTH = 20;//单位长度
	public static final int MULTIPLE = 15;//倍数
	public static final int HALF_SIDE = MULTIPLE * PER_UNIT_LENGTH;//游戏边框的一半长 = 倍数 * 单位长度

	private boolean isFirstRun = true;//判断是否需要初始化
	private boolean isStarted = false;//判断是否开始
	private boolean isPaused = false;//判断是否暂停

	private static int score = 0;//游戏分数
	private static int information = 0;//传递游戏信息

	private Snake snake = new Snake();//新建一条蛇
	private Dot dessert = new Dot();//新建一个点心

	protected void paintComponent(Graphics g){
		super.paintComponent(g);

		//获取中点坐标
		int xCentre = getWidth() / 2;
		int yCentre = getHeight() / 2;

		//获取一个随机点坐标
		int xRandom, yRandom;

		if(isFirstRun){
			isFirstRun = false;

			//初始化游戏边框
			g.drawRect(xCentre - HALF_SIDE, yCentre - HALF_SIDE, HALF_SIDE * 2, HALF_SIDE * 2);

			//初始化蛇头
			snake.getHead().setX(xCentre);
		
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值