大佬教程收集整理的这篇文章主要介绍了Java实现贪吃蛇大作战小游戏(完整版),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
大家好c;今天尝试用swing技术写一个贪吃蛇大作战小游戏c;供大家参考。
效果展示
一、游戏界面
二、得分情况
项目介绍
项目背景
总体需求
实现过程
代码展示
@H_450_40@主类 :Demo类 @H_450_40@ MyPanel类①构造方法
②初始化方法
③绘制方法
④定时器执行方法
@H_450_40@框架Ui类项目结构
总结
“贪吃蛇大作战”游戏是一个经典的游戏c;它因操作简单、娱乐性强c;自从计算机实现以来c;深受广大电脑玩家的喜爱c;本项目基于Java技术c;开发了一个 操作简单、界面美观、功能较齐全 的“贪吃蛇”游戏。通过本游戏的开发c;达到学习Java技术和熟悉软件开发流程的目的。
本系统主要是完成贪吃蛇游戏的基本操作c;用户可自己练习和娱乐。需要满足以下几点要求:
(1)利用方向键来改变蛇的运行方向。 (2)空格键暂停或继续游戏c;并在随机的地方产生食物。 (3)吃到食物就变成新的蛇体(蛇身长度变长c;游戏继续)。
(1)绘制窗体对象。 (2)静态UI设计(包括小蛇c;食物c;游戏区域和标题区域)。 (3)使用键盘监听事件和定时器实现小蛇的移动。 (4)小蛇与食物碰撞的实现。 (5)定义变量存放小蛇长度c;遍历数组实现小蛇身体的增加功能。 (6)退出条件:当游戏积分到达指定分数c;游戏退出。
package Demo;
/**
* 1.画出窗体对象
*
*
* @author 青00-Java
*
*/
public class Demo0 {
}
@H_627_114@myPanel类
package Demo;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.awt.Graphics;
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.ImageIcon;
import javax.swing.JPanel;
import javax.swing.Timer;
//画布类
public class MyPanel extends JPanel implements KeyListener,ActionListener{//继承
private static final Component This = null;
//键盘监听交互接口
int length;
int score;
int[] snakeX=new int[500];//坐标
int[] snakeY=new int[500];
String fx;
Boolean ifStart=false;
//定时器
Timer timer =new Timer(100,this);
int foodx;
int foody;
Random random =new Random();
public MyPanel(){
init();
//添加监听事件
this.setFocusable(true);
this.addKeyListener(this);
score=0;
}
public void init(){
length=3;
fx="r";
//初始化小蛇的位置
snakeX[0]=100;
snakeY[0]=150;
snakeX[1]=75;
snakeY[1]=150;
snakeX[2]=50;
snakeY[2]=150;
foodx=25+25*random.nexTint(57);
foody=125+25*random.nexTint(27);
System.out.println(foodX);
System.out.println(foody);
timer.start();
}
@Override
protected void paintComponent(Graphics g){//画笔对象
super.paintComponent(g);
//绘制顶部的标题
new ImageIcon("C:/Users/Desktop/img/title2.png").paintIcon(this,g,25,11);//创建对象
//绘制游戏区域
g.fillRect(25, 125, 1450, 700);
//绘制小蛇
//蛇头
new ImageIcon("C:/Users/Desktop/img/l.png").paintIcon(this, g, snakeX[0], snakeY[0]);
//蛇身
for(int i=1;i<length;i++){
new ImageIcon("C:/Users/Desktop/img/body.png").paintIcon(This, g, snakeX[i], snakeY[i]);
}
//游戏的提示语
if(ifStart==falsE){
g.setColor(Color.whitE);
g.setFont(new Font("微软雅黑",Font.bOLD,40));
g.drawString("按压空格键继续游戏", 550,500);
g.drawString("无尽模式", 650,400);
}
//画出食物的位置
new ImageIcon("C:/Users/Desktop/img/body.png").paintIcon(this, g, foodx, foody);
}
@Override//按压
public void keyPressed(KeyEvent E) {
int keyCode=e.getKeyCode();
if(keyCode==KeyEvent.VK_SPACE){
ifStart=!ifStart;
}
if(ifStart==truE){
if(keyCode==KeyEvent.VK_LEFT&&fx!="r"){
fx="l";
}else if(keyCode==KeyEvent.VK_RIGHT&&fx!="l"){
fx="r";
}else if(keyCode==KeyEvent.VK_UP&&fx!="d"){
fx="u";
}else if(keyCode==KeyEvent.VK_DOWN&&fx!="u"){
fx="d";
}
}
repaint();
}
@Override
public void actionPerformed(ActionEvent E) {
//改变蛇的位置
if(ifStart==truE){
for(int i=length-1;i>0;i--){
snakeX[i]=snakeX[i-1];
snakeY[i]=snakeY[i-1];
}
if(fx.equals("l")){
snakeX[0]=snakeX[0]-25;
if(snakeX[0]<25){
snakeX[0]=1450;
}
}else if(fx.equals("r")){
snakeX[0]=snakeX[0]+25;
if(snakeX[0]>1450){
snakeX[0]=25;
}
}else if(fx.equals("u")){
snakeY[0]=snakeY[0]-25;
if(snakeY[0]<120){
snakeY[0]=800;
}
}else if(fx.equals("d")){
snakeY[0]=snakeY[0]+25;
if(snakeY[0]>800){
snakeY[0]=120;
}
}
//判断是否吃了食物
if(snakeX[0]==foodx&&snakeY[0]==foody){
length++;
score++;
if(score==100){
ifStart=!ifStart;
}
foodx=25+25*random.nexTint(57);
foody=125+25*random.nexTint(27);
System.out.print("当前食物坐标("+foodx+",");
System.out.print(foody+")");
System.out.println("|||当前分数:"+score+" ");
}
repaint();
}
timer.start();
}
@Override
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub
}
}
package Demo;
import javax.swing.JFrame;
public class Ui {
public static void main(String[] args){
JFrame frame=new JFrame("无尽版贪吃蛇");
frame.setSize(1500, 900);
frame.setLOCATIOnRelativeTo(null);//居中显示
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(true);
frame.add(new MyPanel());
frame.setVisible(true);
}
}
本程序用于初学者学习c;共封装三个类c;分别是Demo类c;R_802_11845@yPanel类c;框架Ui类c;结构简单c;所有方法均在@H_738_161@myPanel类中实现。
本游戏的设计思路类似于游戏“贪吃蛇大作战”c;程序在一些功能的实现上还存在许多不足c;但该项目的实现对Java新手的实战能力有很大的提升。
在使用Java编写该项目时遇到了很多问题c;在解决问题时c;可以对java的面向对象编程有更加深入的理解和认识。
🥰以上就是本篇博客的全部内容c;如果对你有用麻烦关注点赞收藏三连走一波! 👋如有问题欢迎留言c;如有错误烦请指正c;期待你的评论! 👨💻个人主页: 青00 (一起学Java)的博客_CSDN博客-一起学Java,Java领域博主
🤳我的《一起学Java》板块持续更新中c;欢迎各位编程爱好者前来观看!
以上是大佬教程为你收集整理的Java实现贪吃蛇大作战小游戏(完整版)全部内容,希望文章能够帮你解决Java实现贪吃蛇大作战小游戏(完整版)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。