贪吃蛇

先来个效果图吧

工具

eclipse 或者 intellij idea 都可以。图片素材我这边上传的如果有人觉得丑也可以自己搞一搞给蛇换个皮肤。
这个图片开始做的时候也没有素材什么的自己用画图工具画的,然后裁剪一下大小,蛇头部分用ps剪裁然后做了个透明。大家也可以试着自己完成,对于初学者还是比较有成就感。

头向上的时候]

这个可以忽略,相当于游戏的广告栏

[头向右的时候

头向左的时候


这个是食物

头向下的时候

这个是身体

然后上正餐源码附上。

import javax.swing.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
/*** @Author: 冀十三* @DescIption: 主程序* @Date:2021--06--02--12:01*/
public class starGame extends JFrame{//继承JFrameprivate GamePanel gamePanel;public static void main(String[] args) {starGame frame=new starGame(); }public starGame() {//gamePanel=new GamePanel();//this.add(gamePanel);//面板加进来this.addKeyListener(gamePanel);//让面板监听this.setVisible(true);//可见this.setResizable(false);//大小不可变this.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);//窗口关闭this.setBounds(300,150,900,720);//窗口大小以及出现位置
}
}

这是主方法然后上一个数据类用来放那些素材图片,到时候直接调用方便

import javax.swing.*;
import java.net.URL;/*** @Author: 冀十三* @DescIption: 描述* @Date:2021--05--03--12:31*/
public class Date
{private  static URL headerURL =Date.class.getResource("stiatics/header.png");public static ImageIcon header =new ImageIcon(headerURL);//广告栏可以忽略private  static URL upURL =Date.class.getResource("stiatics/up.png");public static ImageIcon up =new ImageIcon(upURL);//头向上private  static URL downURL =Date.class.getResource("stiatics/down.png");public static ImageIcon down =new ImageIcon(downURL);//头向下private  static URL rightURL =Date.class.getResource("stiatics/right.png");public static ImageIcon right =new ImageIcon(rightURL);//头向左private  static URL leftURL =Date.class.getResource("stiatics/left.png");public static ImageIcon left =new ImageIcon(leftURL);//头向右private  static URL bodyURL =Date.class.getResource("stiatics/body.png");public static ImageIcon body =new ImageIcon(bodyURL);//身体private  static URL foodURL =Date.class.getResource("stiatics/food.png");public static ImageIcon food =new ImageIcon(foodURL); //食物

这段一定要注意素材地址。地址不能错!
这个游戏的主要地方面板。重点都在这了。

import java.awt.*;
import java.awt.event.*;
import java.util.Random;
/*** @Author: 冀十三* @DescIption: 游戏面板* @Date:2021--05--02--13:01*/
//绘制游戏面板
public class GamePanel extends JPanel implements  ActionListener,KeyListener{//定义射的数据结构static  int length;//蛇的长度int[] Sx = new int[600];//蛇的x坐标int[] Sy = new int[500];//蛇的y坐标String fx="R";//定义了方向初始是right。boolean isStar=false;//游戏是否开始// boolean fall=false;//游戏是否失败//获取食物坐标Random random= new Random();int foodx;int foody;int score=0;Timer timer=new Timer(100,this); //这块大家可以适当调整蛇的速度当做难度//构造器public GamePanel(){init();//调用初始化方法this.requestFocus(true);this.addKeyListener(this);//面板获得焦点监听}//初始化public  void init(){length=3;Sx[0]=175;Sy[0]=200;//蛇的初始长度为3Sx[1]=150;Sy[1]=200;//初始位置Sx[2]=125;Sy[2]=200;timer.start();isStar=false;// fall=false;foodx=25+25*random.nextInt(32);foody=100+25*random.nextInt(21);}//绘制面板@Overrideprotected void paintComponent(Graphics g) {super.paintComponent(g);//g.调用画笔//绘制静态面板this.setBackground(Color.white);//窗体背景颜色Date.header.paintIcon(this,g,50,0);//头部广告栏。g.fillRect(25,75,850,625);//绘制方块;//把小蛇画上去。switch(fx){//根据 方向更换不同的蛇头的图片case "R":Date.right.paintIcon(this, g, Sx[0], Sy[0]);break; case "U":Date.up.paintIcon(this, g, Sx[0], Sy[0]);break; case "D":Date.down.paintIcon(this, g, Sx[0], Sy[0]);break; case"L":Date.left.paintIcon(this, g, Sx[0], Sy[0]);break;}Date.food.paintIcon(this,g,foodx,foody);g.setColor(new Color(0x0ADCDC));g.setFont(new Font("微软雅黑",Font.BOLD,24));g.drawString("成绩:"+score,450,360);for (int i = 1; i < length; i++) {Date.body.paintIcon(this,g,Sx[i],Sy[i]);}//游戏是否开始。如果没有开始就提示按空格开始if(isStar==false){g.setColor(new Color(0x13D775));g.setFont(new Font("微软雅黑",Font.BOLD,40));g.drawString("按下空格开始游戏",300,300);}else {}//死亡判断以及成绩输出// if(fall==true){//   g.setColor(new Color(0xEF071A));//  g.setFont(new Font("微软雅黑",Font.BOLD,40));//g.drawString("game over!"+"您的成绩为:"+score,300,300);//}}@Overridepublic void actionPerformed(ActionEvent e) {if (Sx[0]==foodx&&Sy[0]==foody){score+=10;length++;foodx=25+25*random.nextInt(32);foody=100+25*random.nextInt(21);}if (isStar){//如果游戏处于开始状态让小蛇动起来。//移动for(int i=length-1;i>0;i--){//除了头Sx[i]=Sx[i-1];Sy[i]=Sy[i-1];}switch (fx){case "R":Sx[0] = Sx[0] + 25;Sy[1] = Sy[0];if (Sx[0] > 850) {Sx[0] =25;}break;case "L":Sx[0] = Sx[0] - 25;Sy[1] = Sy[0];if (Sx[0] < 25) {Sx[0] = 850;}break;case "U":Sy[0] = Sy[0] - 25;Sx[1]=Sx[0];if (Sy[0] < 75) {Sy[0] = 650;}break;case "D":Sy[0] = Sy[0] +25;Sx[1]=Sx[0];if (Sy[0] > 650) {Sy[0] = 75;}break;}repaint();刷新}timer.start();计时开始// for (int i = 0; i < length; i++) {//   if(Sx[0]==Sx[i]&&Sy[0]==Sy[i]){//     fall=true;//}//  }}@Overridepublic void keyTyped(KeyEvent e) {}//监听键盘操作。@Overridepublic void keyPressed(KeyEvent e) {switch (e.getKeyCode()){case KeyEvent.VK_SPACE:isStar=!isStar;repaint();break;//监听键盘case KeyEvent.VK_UP: fx = "U"; break; //上case  KeyEvent.VK_DOWN: fx = "D";break;//下case  KeyEvent.VK_RIGHT:fx = "R";break;//左case KeyEvent.VK_LEFT: fx = "L";break; }//右 }@Overridepublic void keyReleased(KeyEvent e) {}
}这块我的数据是根据我的图片大小来定的,因为身体,头,食物都是25。可以根据自己的大小来调整相关数据,这个面板可以理解为一个个小方格柜子。只要蛇头动起来。让数组的下一个到前一个的位置就可以,可以自己尝试敲一敲。根据上下左右换用不同的头的图片就可以了
注意源码里面的死亡条件我全部注掉了,相当于开个挂。。不死之身还有个没有完善的地方。应该判断一下如果按键位置与蛇当前方向完全相反那么就不更换方向。
新手可以试着写写。
大牛多多指教。
原创不易,转载请注明。

一个纯java写成的贪吃蛇下游戏(《利用一维数组》附完全版源码和素材图片)相关推荐

  1. 计算机毕业设计-基于Java的GUI实现贪吃蛇小游戏

    标题:基于Java多线程版本GUI贪吃蛇小游戏 1.项目技术点 1.多线程的运用. 2.JAVA的GUI的运用. 3.数据结构的灵活运用. 4.随机食物的生成. 5.关卡加速,随着蛇身增长,蛇的速度也 ...

  2. Java写的滑雪爱好者组织活动,预约活动,参与竞赛系统源码

    Java写的滑雪爱好者组织活动,预约活动,参与竞赛系统源码: 源码下载链接:https://wwb.lanzouy.com/iG6EE0bos55e Java写的滑雪爱好者组织活动,预约活动,参与竞赛 ...

  3. 贪吃蛇java 暂停_Java实现贪吃蛇小游戏

    三月份的时候用Java写了一个贪吃蛇的小游戏,写完的时候颇有成就感,现在在这里做一下总结. 先把需要用到的图片资源放在这里,分别为上.下.左.右方向的蛇头,蛇身,食物,标题,可以通过右击另存为的方式下 ...

  4. 爷青回,闲暇之余用java做了个贪吃蛇小游戏,大家感兴趣可以看看

    前言 我想贪吃蛇应该是不少90后和00后的童年(我本人是01年的),回想起从前偷偷拿着我爹的诺基亚在被窝里玩贪吃蛇,不禁感慨万分,时间飞逝,没想到10年后的我也可以自己做一个贪吃蛇了.    该程序主 ...

  5. 俄罗斯方块、贪吃蛇、心形表白 | 好玩的C语言源码

    俄罗斯方块源码,编译运行结果: 俄罗斯方块可以在编译运行后直接玩,玩法和传统俄罗斯方块一样 关注下方B站up主,私信我源码,免费获取贪吃蛇.俄罗斯方块.心形表白 的个人空间_哔哩哔哩_Bilibili ...

  6. 用 Java 实现贪吃蛇小游戏

    程序说明 这是一个用 Java Awt 实现的贪吃蛇小游戏的完整代码 算法分析 (一)启动一个独立线程根据 direction 重绘面板实现蛇身移动效果,运行过程: 记录上次头部的坐标到 tempBo ...

  7. Python贪吃蛇小游戏_完整源码免费分享

    文章目录 Python 贪吃蛇小游戏 1. 导包 2. 配置初始化参数 3. 主函数及运行主体 4. 画食物的函数 5. 画贪吃蛇的函数 6. 画网格的函数(非必选,觉得多余的可以忽略此项) 7. 操 ...

  8. python编程小游戏-10分钟用Python编写一个贪吃蛇小游戏,简单

    贪吃蛇,大家应该都玩过.小编当初第一次接触贪吃蛇的时候 ,还是能砸核桃的诺基亚上,当时玩的不亦乐乎.今天,我们用Python编程一个贪吃蛇游戏,下面我们先看看效果: 好了,先介绍一个思路 所有的游戏最 ...

  9. 10分钟用python编写贪吃蛇小游戏_牛得一批!10分钟用Python编写一个贪吃蛇小游戏...

    贪吃蛇,大家应该都玩过.当初第一次接触贪吃蛇的时候 ,还是能砸核桃的诺基亚上,当时玩的不亦乐乎.今天,我们用Python编程一个贪吃蛇游戏,下面我们先看看效果: 好了,先介绍一个思路 所有的游戏最主要 ...

最新文章

  1. Leangoo看板协作工具与Trello还真的不一样
  2. matlab播放视频语句,matlab语句
  3. 茶杯头开枪ahk代码
  4. 爬格子呀9.17(图论)
  5. Repository 返回 IQueryable?还是 IEnumerable?
  6. 基于USB通信的开关量输入输出板
  7. 瑞幸咖啡考虑重回纳斯达克上市 官方回应:报道不实
  8. 苹果第三代iPhone SE或将于12月份开始投产 明年春季发布
  9. 【P000-008】交易费计算系统,1.1版
  10. les有学计算机的吗,赵欢喜
  11. 在ASP.NET的母版页中使用图片和超链接,HTML标记和ASP.NET标记的不同
  12. WPF学习之数据绑定
  13. Stata:机制检验,如何判断是不是遮掩效应?
  14. apdu 移动sim_SIM卡APDU指令
  15. 2018第一发:记一次【Advanced Installer】打包之旅
  16. Activiti6.0(十二)子流程
  17. Android 4.4 KitKat 支持 u 盘功能
  18. JAVA 消息队列的使用场景
  19. c语言中14 3,C语言中的单精度和双精度浮点型的区别!3.14是哪种?3.14159呢?
  20. Oracle——物化视图

热门文章

  1. 中英文朗读器 v2.05 怎么用
  2. 例题4-6 师兄帮帮忙 UVa12412
  3. 【图像取证篇】手机拍摄的照片包含有哪些信息?
  4. 台式计算机功率一般多少瓦,台式电脑功率一般多大 台式机功率有多少【详细介绍】...
  5. 支付宝 激活开发者模式
  6. 自动重发请求(ARQ)协议
  7. 第7章 Linux服务器程序规范
  8. 湖南科技大学计算机男女比例,18所湖南高校男女比例大揭底,单身的原罪是它?!...
  9. 2014年24段魔尺变三叶花视频教程
  10. NLP工具——自制zero-shot事件抽取器