Java贪吃蛇源代码免费


Java贪吃蛇源代码

源代码地址;链接: https://pan.baidu.com/s/1QOkSZkEkaF0uXegxR-mX2w 提取码: ngg7 复制这段内容后打开百度网盘手机App,操作更方便哦

压缩包解压导入到到eclipse里就能直接运行,图片(注意图片的路径)和音频也都在里面

最终成果;

 

 

1.背景框架

package com.zzk.snake.constant;
public class Constant {
    public static final int GAME_WIDTH = 1024;//窗体宽度
    public static final int GAME_HEIGHT = 578;//窗体高度
    
    public static final String IMG_PRE="com/zzk/snake/img/";//图片路径前缀
}

图片的修改;

package com.zzk.snake.client;

import java.awt.Color;	
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import com.zzk.snake.core.Food;
import com.zzk.snake.core.MyFrame;
import com.zzk.snake.core.MySnake;
import com.zzk.snake.util.ImageUtil;

public class SnakeClient extends MyFrame{
	
	MySnake mySnake = new MySnake(100, 100);//蛇
	Food food = new Food();//食物
	Image background = ImageUtil.images.get("background");//背景图片
	Image fail = ImageUtil.images.get("fail");//游戏结束的文字
	@Override
	public void loadFrame() {
		super.loadFrame();
		//添加键盘监听器,处理键盘按下事件
		addKeyListener(new KeyAdapter() {
			@Override
			public void keyPressed(KeyEvent e) {
				mySnake.keyPressed(e);//委托给mysnake
			}
		});
	}
	/**
	 * 绘制界面
	 */
	@Override
	public void paint(Graphics g) {
		g.drawImage(background, 0, 0, null);//绘制背景
		if(mySnake.live){//如果蛇活着,就绘制
			mySnake.draw(g);
			if(food.live){//如果食物活着,就绘制
				food.draw(g);
				food.eaten(mySnake);//判断是否被吃
			}else{//否则,产生新食物
				food = new Food();
			}
		}else{//蛇死亡,弹出游戏结束字样
			g.drawImage(fail, (background.getWidth(null)-fail.getWidth(null))/2, (background.getHeight(null)-fail.getHeight(null))/2, null);
		}
		drawScore(g);//绘制分数
	}
	/**
	 * 绘制分数
	 * @param g
	 */
	public void drawScore(Graphics g){
		g.setFont(new Font("Courier New", Font.BOLD, 40));
		g.setColor(Color.WHITE);
		g.drawString("SCORE:"+mySnake.score,700,100);
	}
	public static void main(String[] args) {
		new SnakeClient().loadFrame();//加载窗体
	}
}

图片的插入;

package com.zzk.snake.util;

import java.awt.Image;
import java.util.HashMap;
import java.util.Map;

import com.zzk.snake.constant.Constant;

public class ImageUtil {
	public static Map<String,Image> images = new HashMap<>();
	
	static{
		images.put("snake_body", GameUtil.getImage(Constant.IMG_PRE+"snake_body.png"));
		images.put("food", GameUtil.getImage(Constant.IMG_PRE+"food.png"));
		images.put("snake_head", GameUtil.getImage(Constant.IMG_PRE+"snake_head.png"));
		images.put("background", GameUtil.getImage(Constant.IMG_PRE+"background.jpg"));
		images.put("fail", GameUtil.getImage(Constant.IMG_PRE+"fail.png"));
	}
}

2.主程序;

package com.zzk.snake.client;

import java.awt.Color;	
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import com.zzk.snake.core.Food;
import com.zzk.snake.core.MyFrame;
import com.zzk.snake.core.MySnake;
import com.zzk.snake.util.ImageUtil;

public class SnakeClient extends MyFrame{
	
	MySnake mySnake = new MySnake(100, 100);//蛇
	Food food = new Food();//食物
	Image background = ImageUtil.images.get("background");//背景图片
	Image fail = ImageUtil.images.get("fail");//游戏结束的文字
	@Override
	public void loadFrame() {
		super.loadFrame();
		//添加键盘监听器,处理键盘按下事件
		addKeyListener(new KeyAdapter() {
			@Override
			public void keyPressed(KeyEvent e) {
				mySnake.keyPressed(e);//委托给mysnake
			}
		});
	}
	/**
	 * 绘制界面
	 */
	@Override
	public void paint(Graphics g) {
		g.drawImage(background, 0, 0, null);//绘制背景
		if(mySnake.live){//如果蛇活着,就绘制
			mySnake.draw(g);
			if(food.live){//如果食物活着,就绘制
				food.draw(g);
				food.eaten(mySnake);//判断是否被吃
			}else{//否则,产生新食物
				food = new Food();
			}
		}else{//蛇死亡,弹出游戏结束字样
			g.drawImage(fail, (background.getWidth(null)-fail.getWidth(null))/2, (background.getHeight(null)-fail.getHeight(null))/2, null);
		}
		drawScore(g);//绘制分数
	}
	/**
	 * 绘制分数
	 * @param g
	 */
	public void drawScore(Graphics g){
		g.setFont(new Font("Courier New", Font.BOLD, 40));
		g.setColor(Color.WHITE);
		g.drawString("SCORE:"+mySnake.score,700,100);
	}
	public static void main(String[] args) {
		new SnakeClient().loadFrame();//加载窗体
	}
}

 

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值