少儿编程网 > 少儿编程知道 > 少儿编程scratch贪吃蛇代码

留言申请试听免费课程【】人申请

少儿编程scratch贪吃蛇代码

少儿编程Scratch第15讲:贪吃蛇

少儿编程scratch贪吃蛇代码

郎揸uUN少儿编程网-https://www.pxcodes.com

目的:完成一个贪吃蛇的小游戏,了解角色图片制作、克隆、运动方向、碰到障碍物的处理。uUN少儿编程网-https://www.pxcodes.com

游戏说明:游戏开始时,蛇不停的往前移动,身体逐渐变长。玩家可以通过上下左右四个按键改变蛇运动方向(向上、向下、向左和向右)。蝙蝠是蛇要吃掉的小动物,可能随机出现在屏幕任何一个地方,挥动翅膀,但保持位置不动(当然也可以让蝙蝠飞起来)。当蛇碰到蝙蝠时,蝙蝠消失,即蛇将蝙蝠吃掉,获取得分;蛇吃掉蝙蝠以后,其中的一节身体变成蝙蝠的颜色。经过几秒后,(另外一只)蝙蝠重新出现在另外一个位置。游戏继续。uUN少儿编程网-https://www.pxcodes.com

这个游戏属于“炒冷饭”的范畴,因为很多小游戏的基本实现指令和方法都是类似的。uUN少儿编程网-https://www.pxcodes.com

适合人群:一二年级学生。在家长或老师指导下完成。uUN少儿编程网-https://www.pxcodes.com

用时:2-3小时。uUN少儿编程网-https://www.pxcodes.com

一、角色设置uUN少儿编程网-https://www.pxcodes.com

设置两个角色。一个是蛇,分成蛇头和蛇身。蛇的身体由一块一块组成。uUN少儿编程网-https://www.pxcodes.com

蝙蝠:蛇的食物,可以挥动翅膀(,也可以飞翔移动)。uUN少儿编程网-https://www.pxcodes.com

微信订阅号:ABO_CRMuUN少儿编程网-https://www.pxcodes.com

二、蛇头的制作uUN少儿编程网-https://www.pxcodes.com

这是Scratch标准角色库中提供的球,有不同颜色的球。我们以这个球为基础,制作蛇头。uUN少儿编程网-https://www.pxcodes.com

蛇头造型1:在角色中,使用“变形”,出现出现几个可以拉动的小点点。拉动圆形右边的点,**后形成尖尖的蛇头形状。uUN少儿编程网-https://www.pxcodes.com

蛇总要有眼睛,因此使用用粗线点两下,或者用画圆的功能,画两个圆,填充红色。这是蛇的造型1.uUN少儿编程网-https://www.pxcodes.com

蛇头造型2:因为蛇在上下左右移动时,要保持头的方向一致,因此复制一个图,然后上下翻转,形成另外一个蛇头,造型2.uUN少儿编程网-https://www.pxcodes.com

三、让蛇头运动起来
uUN少儿编程网-https://www.pxcodes.com

因为一个多月没有做运动类的程序了,今天已经比较生疏。为了让蛇头前后左右移动,显示使用了右边的X或Y坐标增加一定位置的循环指令。uUN少儿编程网-https://www.pxcodes.com

后来改成左边的运动和方向。uUN少儿编程网-https://www.pxcodes.com

重复循环,每次都移动1步。默认的时候,蛇头是往右边移动的。如果按了上箭头,面向0度,即往上走。如果按下箭头,面向180度方向,即往下走。uUN少儿编程网-https://www.pxcodes.com

测试。uUN少儿编程网-https://www.pxcodes.com

但这时候我们会发现,蛇头的方向是不对的,因此,下移的时候,需要将蛇头的造型切换为2. 除非蛇头上下对称,否则就有这个问题。uUN少儿编程网-https://www.pxcodes.com

用类似的方法,处理左右移动。uUN少儿编程网-https://www.pxcodes.com

现在,这个蛇头可以顺畅的动起来了。uUN少儿编程网-https://www.pxcodes.com

四、蛇身体的制作-让蛇长出身体
uUN少儿编程网-https://www.pxcodes.com

也不能只有这一个蛇头啊。怎么做出蛇的身体呢?那就一节一节克隆吧,没格一段时间,克隆出一节“蛇身体”来,然后间隙小一些,看上去,就成一条连续的蛇了。uUN少儿编程网-https://www.pxcodes.com

这里再次使用一遍“开始”指令,蛇头每隔一秒,就克隆一个自己。注意克隆等待时间和运动步数,蛇的身体要保持连续。uUN少儿编程网-https://www.pxcodes.com

试玩一下。uUN少儿编程网-https://www.pxcodes.com

随着蛇的移动,蛇真的变长了, 长出来了。但是有个问题,有很多蛇头,因为我们是克隆了蛇头。Scratch允许我们克隆300份,因此可以一直玩,到了300份蛇头,就不会继续克隆了。uUN少儿编程网-https://www.pxcodes.com

到这一步,小孩的兴致已经上来了,一定要把满屏都擦成蛇头为止。小妹妹也上来玩了。uUN少儿编程网-https://www.pxcodes.com

五、蛇身体的制作-一节一节的蛇身
uUN少儿编程网-https://www.pxcodes.com

为了解决复制出来的都是蛇头的问题,我们需要一节蛇的身体,就是没有眼睛的头。uUN少儿编程网-https://www.pxcodes.com

这个很简单,只需要复制出另外一个造型,把蛇的眼睛去掉即可。造型3:一节蛇的身体。uUN少儿编程网-https://www.pxcodes.com

六、蛇头变成蛇身uUN少儿编程网-https://www.pxcodes.com

蛇头复制出来以后,克隆体启动时,需要将造型切换成3,即将蛇头变成蛇的身体。如果不变换,那就会出来很多蛇头。uUN少儿编程网-https://www.pxcodes.com

再玩一下。uUN少儿编程网-https://www.pxcodes.com

这时候就只有一个蛇头了。还是可以克隆300份。KK想把整屏都盖上蛇,到后来就不会继续克隆了。这也体会了只允许300份克隆体的限制。在实际应用中,要将不需要的克隆体删除,而不能仅做简单的隐藏操作。uUN少儿编程网-https://www.pxcodes.com

克隆体启动后,等待8秒,就删除本克隆体。这样蛇的身体就不会“无限”长了。 uUN少儿编程网-https://www.pxcodes.com

七、蝙蝠角色-随机出现
uUN少儿编程网-https://www.pxcodes.com

本来贪吃蛇的游戏是让蛇吃掉球或豆子的,结果说要吃掉蝙蝠。就加了一个蝙蝠角色。uUN少儿编程网-https://www.pxcodes.com

首先让蝙蝠挥动翅膀,这个只要不停更改造型就可以了。uUN少儿编程网-https://www.pxcodes.com

然后,让蝙蝠出现在屏幕的随机位置上。 X和Y都使用一个随机数,当然不能太靠近边缘。uUN少儿编程网-https://www.pxcodes.com

八、蛇吃蝙蝠:侦测碰到某种颜色
uUN少儿编程网-https://www.pxcodes.com

这是关键的一步。我们使用了碰到某种颜色,蝙蝠则隐藏。选择“碰到颜色”以后,可以在屏幕中点击蛇的眼睛, 这样能够获取的红色。uUN少儿编程网-https://www.pxcodes.com

当碰到红色的时候,蝙蝠隐藏。蛇将蝙蝠吃掉了。uUN少儿编程网-https://www.pxcodes.com

九、蛇吃蝙蝠:游戏得分
uUN少儿编程网-https://www.pxcodes.com

吃掉蝙蝠以后,分数增加。因此设置一个全局变量。开始时,将分数设置为零。蝙蝠被蛇吃掉后,分数增加。uUN少儿编程网-https://www.pxcodes.com

十、蛇吃蝙蝠:蝙蝠在蛇的肚子里
uUN少儿编程网-https://www.pxcodes.com

吃掉蝙蝠以后,蛇的肚子有一节会变成黑色,甚至那一节还可以变大一点。这个实现稍微复杂一点。uUN少儿编程网-https://www.pxcodes.com

首先制作一节黑色的蛇的身体,还是蛇的角色,造型2.uUN少儿编程网-https://www.pxcodes.com

其次,设置一个黑色的全局变量。默认是0.如果被吃掉了,设置为1.uUN少儿编程网-https://www.pxcodes.com

在克隆体启动时,读取合格黑色的全局变量标识,如果是0,则为普通蛇身,造型为2.如果是1,即刚吃掉一只蝙蝠,需要变成黑色,造型3。切换成造型3以后,需要将黑色的变量设置为0,否则后面就全是黑色的了。uUN少儿编程网-https://www.pxcodes.com

总结测试:uUN少儿编程网-https://www.pxcodes.com

**后效果图这个图。uUN少儿编程网-https://www.pxcodes.com

还可以改进,例如多条蛇、多只蝙蝠,蝙蝠会飞翔,不能碰到边缘等。蛇的身体,在转弯的时候,覆盖的还不大好。uUN少儿编程网-https://www.pxcodes.com

少儿编程-ScratchuUN少儿编程网-https://www.pxcodes.com

· 少儿编程Scratch第14讲:链表和冒泡排序算法(2018/9)uUN少儿编程网-https://www.pxcodes.com

· 少儿编程Scratch第13讲:九九乘法问答(2018/7)uUN少儿编程网-https://www.pxcodes.com

· 少儿编程Scratch第12讲:制作时钟 (2018/6)uUN少儿编程网-https://www.pxcodes.com

· 少儿编程Scratch第11讲:植物大战僵尸(1) (2018/5)uUN少儿编程网-https://www.pxcodes.com

· 少儿编程Scratch第十讲:钢琴演奏入门(2018/4)uUN少儿编程网-https://www.pxcodes.com

· 少儿编程Scratch第九讲:小猫跳跳-较完整的跳跃运动(2018/4)uUN少儿编程网-https://www.pxcodes.com

· 少儿编程Scratch第八讲:变量和太空大战(2018/4)uUN少儿编程网-https://www.pxcodes.com

· 少儿编程Scratch第七讲:字母雨打字练习(2018/3)uUN少儿编程网-https://www.pxcodes.com

· 少儿编程Scratch第六讲:抽奖游戏之造型、随机和广播(2018/2)uUN少儿编程网-https://www.pxcodes.com

· kidscoding8.com/699.htm少儿编程Scratch第五讲:练习一坐标和移动(2018/1)uUN少儿编程网-https://www.pxcodes.com

· 少儿编程Scratch第四讲:射击游戏的制作,克隆的奥秘(2018.01)uUN少儿编程网-https://www.pxcodes.com

· 少儿编程Scratch第三讲:宇宙大战.枪战游戏(2018.01)uUN少儿编程网-https://www.pxcodes.com

· kidscoding8.com/665.htm少儿编程Scratch第二讲:奇妙的接球小游戏(2018.01)uUN少儿编程网-https://www.pxcodes.com

· Scratch第一讲:Scratch完美的初体验(2018.01)uUN少儿编程网-https://www.pxcodes.com

uUN少儿编程网-https://www.pxcodes.com

孩子一年级成绩不理想,朋友建议可以学学少儿编程,学习少儿编程对提高孩子的逻辑思维能力真的有帮助吗?

少儿编程scratch贪吃蛇代码

彭盅宀uUN少儿编程网-https://www.pxcodes.com

少儿编程本质上就是在收智商税。uUN少儿编程网-https://www.pxcodes.com

你以为写个scratch就算会编程了???uUN少儿编程网-https://www.pxcodes.com

scratch这个东西本质上就是别人啥都写好了,就像搭积木似的让你拼起来。uUN少儿编程网-https://www.pxcodes.com

编程这个东西,学俩星期的都能忽悠没学过的,你不会真以为孩子学俩月能写个残疾版贪吃蛇就是天赋异禀吧?本质上大多数的少儿编程都只会教“模拟”,相当于给你段话让你把他读一遍,因为这样家长看的懂,表面上进步明显其实啥用没有。uUN少儿编程网-https://www.pxcodes.com

而对于需要思维的编程,比如说算法、数据结构,至少需要初中级别的智商才能有学习的资本。 uUN少儿编程网-https://www.pxcodes.com

仔细一想现在一年级的小朋友都还有“成绩”这个概念真是阔怕,这童年才刚开始呢,自己想玩啥玩啥不比天天可这交智商税好多了。uUN少儿编程网-https://www.pxcodes.com

uUN少儿编程网-https://www.pxcodes.com

趣味Scratch青少儿编程-2019年课程全部源代码总结

少儿编程scratch贪吃蛇代码

曹皑uUN少儿编程网-https://www.pxcodes.com

程序包括:uUN少儿编程网-https://www.pxcodes.com

(1) Scratch少儿编程基础课程,12课源代码;uUN少儿编程网-https://www.pxcodes.com

(2) Scratch编程与趣味数学,10课源代码;uUN少儿编程网-https://www.pxcodes.com

(3) Scratch编程趣味篇,30课源代码。uUN少儿编程网-https://www.pxcodes.com

Scratch少儿编程基础课程,12课源代码目录如下:uUN少儿编程网-https://www.pxcodes.com

Scratch编程与趣味数学,10课源代码目录如下:uUN少儿编程网-https://www.pxcodes.com

Scratch编程趣味篇,30课源代码目录如下:uUN少儿编程网-https://www.pxcodes.com

我们通过线上编程的方式,希望能让更多的家长和孩子能便捷接触到青少儿编程,同时获取青少儿编程的**新动态。家长可以通过和孩子一起学习的方式,观察孩子编程的兴趣,在编程中锻炼孩子的数学思维。小杨老师一直觉得兴趣是孩子学习**好的老师,通过线上的方式能让孩子先体验编程的兴趣,而不必纠结于线下所花的时间和金钱。uUN少儿编程网-https://www.pxcodes.com

获取程序源码,请大家先关注微信公众号"趣味Scratch青少儿编程",公众号有全部源代码的获取方式。uUN少儿编程网-https://www.pxcodes.com

uUN少儿编程网-https://www.pxcodes.com

程序员用Java实现经典贪吃蛇游戏,小白练手**合适(附教程分享)

少儿编程scratch贪吃蛇代码

邬璧鍪uUN少儿编程网-https://www.pxcodes.com

贪吃蛇是由java开发出来的一款经典小游戏,java小白入门可以用这款游戏开发练手,可以在一定程度上锻炼自己的编程能力。话不多说,下面小编来带领大家逐步实现它。
游戏界面如下:
uUN少儿编程网-https://www.pxcodes.com


代码如下:
uUN少儿编程网-https://www.pxcodes.com


以上就是全部代码,大家可以练练手。
同时为大家准备了一些java的学习教程分享,希望可以帮助到大家。
uUN少儿编程网-https://www.pxcodes.com

uUN少儿编程网-https://www.pxcodes.com

厉害了,程序员28行代码写贪吃蛇游戏,附源码!

少儿编程scratch贪吃蛇代码

陈嗔哒uUN少儿编程网-https://www.pxcodes.com

对于贪吃蛇游戏,大家基本上都玩过,但是作为一个程序员,大家是否想过要自己去写一个贪吃蛇,毕竟玩别人写的游戏和自己写的游戏是两种截然不同的感受,而且也可以通过制作来提升自己的技术! uUN少儿编程网-https://www.pxcodes.com

其实贪吃蛇的逻辑并不复杂,只要学过一段时间的编程,不管是什么语言,基本上都可以独立实现,而今天和大家分享的一个贪吃蛇源码,是小编见过的比较“极致”的代码了,用的是canvas+JavaScript,总共只有28行代码。uUN少儿编程网-https://www.pxcodes.com


贪吃蛇源码:uUN少儿编程网-https://www.pxcodes.com


<!doctype html> 
<html>
<body style='overflow:hidden'> 
<canvas id="can" width="400" height="400" style="background:Black;display: block;margin:20px auto;"></canvas> 
<script> 
var sn = [ 42, 41 ], dz = 43, fx = 1, n, ctx = document.getElementById("can").getContext("2d"); 
function draw(t, c) { 
ctx.fillStyle = c; 
ctx.fillRect(t % 20 * 20 + 1, ~~(t / 20) * 20 + 1, 18, 18); 
} 
document.onkeydown = function(e) { 
fx = sn[1] - sn[0] == (n = [ -1, -20, 1, 20 ][(e || event).keyCode - 37] || fx) ? fx : n 
}; 
!function() { 
sn.unshift(n = sn[0] + fx); 
if (sn.indexOf(n, 1) > 0 || n<0||n>399 || fx == 1 && n % 20 == 0 || fx == -1 && n % 20 == 19) 
return alert("GAME OVER"); 
draw(n, "Lime"); 
if (n == dz) { 
while (sn.indexOf(dz = ~~(Math.random() * 400)) >= 0); 
draw(dz, "Yellow"); 
} else 
draw(sn.pop(), "Black"); 
setTimeout(arguments.callee, 130); 
}(); 
</script> 
</body> 
</html> 

效果展示:uUN少儿编程网-https://www.pxcodes.com

游戏中uUN少儿编程网-https://www.pxcodes.com

游戏结束uUN少儿编程网-https://www.pxcodes.com


但是整体来说还是有一定的缺陷,代码由于过于追求简单,而放弃了很多代码方面的规范,比如注释,比如代码的可读性,如果没有一定的基础的同学,对于这个代码可能需要研究很久才能明白其中的逻辑性。所以,代码并不是越短越好,在实际的项目开发中,要考虑多方面的因素。uUN少儿编程网-https://www.pxcodes.com


福利区:uUN少儿编程网-https://www.pxcodes.com

关注小编,私信"源码"即可,自助领取28行极简代码贪吃蛇源码文档版。uUN少儿编程网-https://www.pxcodes.com

uUN少儿编程网-https://www.pxcodes.com

你知道贪吃蛇游戏是怎么用scratch做出来的?

少儿编程scratch贪吃蛇代码

凤掷uUN少儿编程网-https://www.pxcodes.com

  在过去玩游戏是一种“不务正业”,孩子长期玩游戏会耽误到他们的学业,这种说法的确是对孩子学习上和生活上的指导,但是我们要知道为什么玩游戏在过去不被人们看好呢?这其实在游戏本身和玩游戏人的思想在起作用,沉迷游戏对孩子的伤害性有点大,但是如果将游戏作为一种开发大脑、锻炼思维能力的过程,玩游戏对孩子本身也会有一定的促进作用。uUN少儿编程网-https://www.pxcodes.com

  例如scratch,如何使用这种教程来制作贪吃蛇游戏吗?uUN少儿编程网-https://www.pxcodes.com

  首先孩子们要对scratch编程有一定的了解。scratch软件是一款适合青少儿学习的一种编程语言,它不仅能让孩子利用游戏拖拽功能实现对编程的学习,还能让孩子本身在学习中提升对编程的理解能力,思维能力和积极性也会不断的被开发出来。uUN少儿编程网-https://www.pxcodes.com

  其次孩子需要对scratch教程贪吃蛇游戏有一定的了解。在制定这款游戏时需要设定好游戏中的角色、关卡以及目标等,也就是说让孩子首先具有一定的游戏设计思路。孩子可以通过键盘上的方向来控制蛇头,然后通过界面中的坐标让贪吃蛇移动、穿墙等,并通过建立变量来计算出游戏过程中的总分值,记录贪吃蛇的速度和吃的食物数量等,这样就能让贪吃蛇因为吃到的东西多而变得更长。uUN少儿编程网-https://www.pxcodes.com

  在进行游戏设计的过程中,刚接触的孩子可能不太理解游戏过程中的一些设计思路,没关系,因为学习编程是一个潜移默化的过程,打好基础,综合知识运用后孩子们才能以后具有自己的想法和创造。uUN少儿编程网-https://www.pxcodes.com

uUN少儿编程网-https://www.pxcodes.com

编程猫年前融资又成功,现在进入少儿编程领域,是不是还有机会?

少儿编程scratch贪吃蛇代码

成寸uUN少儿编程网-https://www.pxcodes.com

2020-08-23 01:23:11 uUN少儿编程网-https://www.pxcodes.com

今天又看了一遍高赞的内容,有一段感觉极为离谱,他引用传言说,编程猫内部存款只有六千万,这在我看来极为离谱。uUN少儿编程网-https://www.pxcodes.com

就我家人在编程猫的工资以及编程猫几千人的公司规模来看,六千万**多就给全体员工发两个月工资。uUN少儿编程网-https://www.pxcodes.com

实际上大部分老师都月薪过万,寒暑假期间工作量倍增,python组普遍两万多,所以存款若是只有六千万,能发一个月的工资都够呛。。uUN少儿编程网-https://www.pxcodes.com

而那个答案是三月份写的,我家人三月已经入职,这几个月发工资就没有拖欠过,可见其有多离谱。uUN少儿编程网-https://www.pxcodes.com

高赞还提到资金链断裂,编程猫都在考虑上市了,融不到钱是不可能的。uUN少儿编程网-https://www.pxcodes.com

不得不怀疑这篇文章的作者是否真的了解这个公司,还是另有所图。uUN少儿编程网-https://www.pxcodes.com

2020-08-23 01:34:28 编程猫的教师岗执行末尾淘汰制,连续三个月绩效排名不足20%(好像)以下就会被淘汰,高度内卷,所以工作压力非常大。uUN少儿编程网-https://www.pxcodes.com

2020-08-23 01:32:24 处罚非常严格,而且规章制度的更新频繁,有时不知不觉就碰了雷区,我家人在公司认识的好朋友,因为不知道新的规章制度里规定,教师不允许加课超过限额,于是被辞退了,当天就走人。uUN少儿编程网-https://www.pxcodes.com

以下旧回答uUN少儿编程网-https://www.pxcodes.com


高赞回答的一部分内容跟我听到的有很大差异,我有家人在编程猫,讲讲我知道的情况。uUN少儿编程网-https://www.pxcodes.com

编程猫在疫情期间客流量爆炸,平均每个教师比平时多了一倍多的工作量,教师紧缺,还在扩招。uUN少儿编程网-https://www.pxcodes.com

疫情打击了很多经济,但却对线上教育服务有很大的促进,想必也推进了少儿编程的受众群。uUN少儿编程网-https://www.pxcodes.com

编程猫的课程是一系列有剧情的动画串联起来的,比如第一节试听课的剧情是主人公阿短的宇宙飞船在太空中遭遇敌人,由于炮弹数量不够而需要改装飞船,小朋友要做的就是帮助修改飞船发射炮弹的内容代码,提升炮弹的发射速度,增大发射角度,帮助阿短打败敌人,也就是一个飞行射击游戏的游戏属性修改。uUN少儿编程网-https://www.pxcodes.com

编程猫的课程比起另外一家公司的有一定难度,四年级小孩就要学数组了,还用云变量的概念传授服务器的思想,后面还有设计学生管理系统这种稍大一点的项目,有一小部分小孩学得一脸懵逼,但大部分还是能跟上。uUN少儿编程网-https://www.pxcodes.com

编程猫也不完全是录播课,可以理解为教材由PPT形式展示,老师发文字和语音消息还有截图,学生可以提交代码完成互动,所以一个老师可以同时对很多不同课程的学生上课,只要语速够快,对二十个学生都行,能力有限或不想上课还可以把课转给其他人,因为工资绩效按你上的课时数算,还有教师等级,等级越高课时费越贵。uUN少儿编程网-https://www.pxcodes.com

编程猫除了有少儿编程,还有noip培训,少儿机器人培训,python培训(海龟编辑器),而且还在招收韩语老师,因为韩国也有很多学生来报名,听说要在美股上市,但**近这个股灾。。。uUN少儿编程网-https://www.pxcodes.com

编程猫和其他机构**大的不同点在于有一个编程猫社区,很多小孩在上面可以发布自己的游戏作品,对感兴趣的小孩形成了一定的黏性,比如我看到很多小学生在上面发表了蔡徐坤相关的作品,虽然游戏大多简单,但比橙光要复杂,但这种内容能自生的社区,是很有活力的。uUN少儿编程网-https://www.pxcodes.com

使用的语言也不是scratch,而是他们自己开发的玩具语言kitten,语法和scratch差不多,但是它的平台接口比较丰富完善,上手简单,小孩随便拖几下就能做出个能玩的游戏,又有一定深度和自由度,想精心做一个像样的小游戏也是能做的,比如贪吃蛇,打砖块,飞机大战,切水果,俄罗斯方块,重力感应弹球等等。uUN少儿编程网-https://www.pxcodes.com

附一个做的不错的切水果链接地址:shequ.codemao.cn/work/1uUN少儿编程网-https://www.pxcodes.com

还能做3D透视,把立方体2D投影到屏幕上,算法是小孩子自己搞的,不是系统给的轮子: shequ.codemao.cn/work/3uUN少儿编程网-https://www.pxcodes.com

我觉得编程猫社区的设计,给小孩子多了一些表达自己的途径和方式,上面有很多有创意的作品。uUN少儿编程网-https://www.pxcodes.com

编程猫的办公室有很多猫,二次元文化比较浓,有女生穿水手服上班,但是管理非常严格,禁止教案抄袭,一旦发现就立即辞退,并且迟到惩罚也很严重,每次罚款两百,三次辞退,两周组织一次团建。uUN少儿编程网-https://www.pxcodes.com

关于线下加盟的部分我不清楚,线上我就知道这些。uUN少儿编程网-https://www.pxcodes.com

我明明感觉很有活力的公司,为什么在知乎上就是一片药丸的声音?uUN少儿编程网-https://www.pxcodes.com

《青少年编程能力等级》标准正式发布,编程猫作为**少儿编程企业参与标准研制uUN少儿编程网-https://www.pxcodes.com

uUN少儿编程网-https://www.pxcodes.com

少儿编程Scratch软件为什么不同,有什么特点

少儿编程scratch贪吃蛇代码

潘噜橱uUN少儿编程网-https://www.pxcodes.com

  说到少儿学编程,很多人的建议就是从Scratch开始,这是一款模块化的编程软件,趣味性强,比较适合年龄较小或者从零开始学编程的孩子,即使不会动手敲代码,只要思维逻辑完整,通过鼠标拖拽就能实现简单编程。Scratch简洁明了的编程方式深受孩子们欢迎,但考虑到很多外行的家长对这方面还不了解,下面“7分钟课堂”就来简单说说Scratch编程的特点,一起来了解一下。uUN少儿编程网-https://www.pxcodes.com

1.功能强大uUN少儿编程网-https://www.pxcodes.com

单纯的编程通常会让孩子在短暂的学习之后失去兴趣,除了代码就是代码,孩子们完成的还是和平时做功课一样的解题过程,编程运行的结果也只是冷冰冰的数据或者图案。uUN少儿编程网-https://www.pxcodes.com

Scratch软件会让人觉得眼前一亮,不仅仅有不同类型的角色可以供孩子选择,还可以让这些不同的类似动漫人物的角色完成自己想要完成的任务,让孩子能够自己去设计自己心中的动画,讲述自己想讲述的故事,这是不是会更加有意思呢?uUN少儿编程网-https://www.pxcodes.com

2.娱乐性强uUN少儿编程网-https://www.pxcodes.com

Scratch不仅仅可以让孩子们完成自己设计动画的梦想,还可以让孩子们完成自己的游戏设计。当你还在纠结孩子天天要玩儿这样那样的电子游戏,亦或者是心心念念地想着何时能够玩到10分钟到30分钟的平板电脑,我们已经可以让孩子自己去设计自己的游戏了。uUN少儿编程网-https://www.pxcodes.com

太难?当然不会!还记得我们小时候对着学习机去玩**大战么?还记得我们紧紧盯着屏幕看着别人玩超玛丽,着急等待到自己的时候么?uUN少儿编程网-https://www.pxcodes.com

现在你完全可以让你孩子给你设计一个,然后让孩子带着你去回忆童年吧!是不是会更加有意义呢?uUN少儿编程网-https://www.pxcodes.com

3.知识性强uUN少儿编程网-https://www.pxcodes.com

这样一款编程软件能够让你的孩子学到和其他编程语言一样的知识么?答案是肯定的!Scratch能够实现的功能远比你想象中强大。什么是坐标系,什么是变量,什么是链表,或许你都不能很好地给小学生解释这些,但是当你的孩子完成了一系列Scratch编程课程的学习之后他就能够生动地并且用自己做出来的例子告诉你答案!uUN少儿编程网-https://www.pxcodes.com

4.应用拓展uUN少儿编程网-https://www.pxcodes.com

不仅仅是编程,不仅仅是动画,不仅仅是游戏!作为机器人课程学习的编程软件,更加重要的是Scratch能够广泛应用于多种机器人创客的硬件上!uUN少儿编程网-https://www.pxcodes.com

正是基于这些特点,Scratch软件变得与众不同,这不只是一个简单的互动游戏开发工具,现在已经成为一种非常流行的智力开发工具。uUN少儿编程网-https://www.pxcodes.com

uUN少儿编程网-https://www.pxcodes.com

Scratch功能非常强大,少儿编程香不香?

少儿编程scratch贪吃蛇代码

褚界uUN少儿编程网-https://www.pxcodes.com

以前玩过一次Scratch,那时候只觉得是积木式可视化编程,认为是很初级的玩具。uUN少儿编程网-https://www.pxcodes.com

今天再次玩了下Scratch,感觉完全不一样,原来Scratch功能很强大。uUN少儿编程网-https://www.pxcodes.com

有平面运动,外观动画,事件输入,碰撞检测,变量运算,消息机制,条件循环语句。还可以自制积木,可以外部模块扩展,视频检测,翻译,LEGO机器人连接等。uUN少儿编程网-https://www.pxcodes.com

通过Scratch可以做原来平面的flash游戏,如飞机✈大战,超级玛丽,贪吃蛇……还可以做多媒体互动,和我们的行业直接相关。uUN少儿编程网-https://www.pxcodes.com

学好Scratch等于掌握了编程的基本要素,打开了逻辑思维的大门,值得好好研究和学习下,说不定下一步就搞少儿编程了[微笑]…… uUN少儿编程网-https://www.pxcodes.com

https://www.zhihu.com/video/1276594734384537600uUN少儿编程网-https://www.pxcodes.com

Java简单实现贪吃蛇经典小游戏(附源代码)

少儿编程scratch贪吃蛇代码

卫匝鞘uUN少儿编程网-https://www.pxcodes.com

在我们学习java的时候,为了提高我们的兴趣,我们经常会使用所学到的知识去做一些小游戏,这篇blog就介绍了一个经典而且好理解的小游戏-贪吃蛇。uUN少儿编程网-https://www.pxcodes.com

一、使用知识

  • Jframe
  • GUI
  • 双向链表
  • 线程

二、使用工具

  • IntelliJ IDEA
  • jdk 1.8

三、开发过程

3.1素材准备

首先在开发之前应该准备一些素材,已备用,我主要找了一个图片以及一段优雅的音乐。uUN少儿编程网-https://www.pxcodes.com

3.2 开发过程

3.2.1 创建项目

  • 首先进入idea首页 open一个你想放项目的文件夹
  • 进入之后右键文件名 new 一个新的Directory——Snake
  • 把准备好的素材复制到文件中
  • 继续创建目录 src/Sanke
  • 选中src Mark Directory as — Souces 把src添加为根目录

3.2.2 页面设计

  • 创建java Class 文件 Snake - new - java class SnakeName 接下来的时候会对这个SnakeName.java里面的代码不停完善
    首先设置窗口格式
package Sanke;

import javax.swing.*;

/**
 * @author Swyee
 **/
public class SnakeGame extends JFrame {

    SnakeGame(){
        this.setBounds(100, 50, 700, 500);//设置窗口大小
        this.setLayout (null);//更改layout 以便添加组件
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置关闭窗口的状态
        this.setResizable(false);//窗口不可以改变大小
        this.setVisible(true);//设置焦点状态为true
    }
    public static void main(String[] args) {
        new SnakeGame();
    }

}
  • 继续创建新的文件 SnakeGrid
package Sanke;

import java.awt.*;

/**
 * @author Swyee
 **/
public class SnakeGrid extends Panel {
    SnakeGrid(){
        this.setBounds(0, 0, 700, 400);
        this.setBackground(Color.black);设置背景颜色
    }

}
  • 将页面引用到SnakeGame.java中
package Sanke;

import javax.swing.*;

/**
 * @author Swyee
 **/
public class SnakeGame extends JFrame {
    SnakeGrid snakeGrid= new SnakeGrid();
    SnakeGame(){
        this.setBounds(100, 50, 700, 500);//设置窗口大小
        this.setLayout(null);//更改layout 以便添加组件
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置关闭窗口的状态
        this.setResizable(false); //窗口不可以改变大小
        this.add(snakeGrid);
        this.setVisible(true);//设置焦点状态为true
    }
    public static void main(String[] args) {
        new SnakeGame();
    }

}

运行样式uUN少儿编程网-https://www.pxcodes.com

  • 设置背景图片 背景音乐
    在SnakeGrid.java中增加Music方法 设置画笔 绘图
package Sanke;

import java.applet.Applet;
import java.applet.AudioClip;
import java.awt.*;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

/**
 * @author Swyee
 **/
public class SnakeGrid extends JPanel {
    ImageIcon image = new ImageIcon("Snake/sky.jpg");//图片文件地址
    File f= new File("Snake/music.wav");//音乐文件地址
    SnakeGrid(){
        this.setBounds(0, 0, 700, 400);
        this.setBackground(Color.black);
    }

    /**
     * 设置画笔
     * @param g
     */
    @Override
    public void paint(Graphics g) {
        super.paint(g);
        image.paintIcon(this, g, 0, 0); //设置背景图片
     }
    //读取音乐文件
    void Music(){
        try {
            URI uri = f.toURI();
            URL url = uri.toURL();
            AudioClip aau= Applet.newAudioClip(url);
            aau.loop();
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

在SnakeName中调用uUN少儿编程网-https://www.pxcodes.com

package Sanke;

import javax.swing.*;

/**
 * @author Swyee
 **/
public class SnakeGame extends JFrame {
    SnakeGrid snakeGrid= new SnakeGrid();
    SnakeGame(){
        this.setBounds(100, 50, 700, 500);//设置窗口大小
        this.setLayout(null);//更改layout 以便添加组件
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置关闭窗口的状态
        this.setResizable(false);//窗口不可以改变大小
        this.add(snakeGrid);
        //设置焦点
        snakeGrid.setFocusable(true);
        snakeGrid.requestFocus();
        snakeGrid.Music();//调用打开音乐的方法
        this.setVisible(true);//设置焦点状态为true
    }
    public static void main (String[] args) {
        new SnakeGame();
    }

}

呈现uUN少儿编程网-https://www.pxcodes.com

3.23 画蛇

蛇的身体将会有双向链表组成,双向链表能记录一个节点的上一个节点和下一个节点。蛇的移动其实就是节点的变化,从而达到一种移动的视觉。uUN少儿编程网-https://www.pxcodes.com

  • 新建java Snake 创建节点
package Sanke;


import java.awt.Graphics;


public class Snake {
	public static final int span=20;//间距
	public static final String up="u";
	public static final String down="d";
	public static final String left="l";
	public static final String right="r";
	class Node{
		int row;
		int col;
		String dir;//方向
		Node next;
		Node pre;
		Node(int row,int col,String dir){
			this.row = row;
			this.col = col;
			this.dir = dir;
		}
		public void draw(Graphics g) {
			g.fillOval(col*span, row*span, span,span);

		}

	}

}
  • 画蛇

在snake里面增加draw()方法uUN少儿编程网-https://www.pxcodes.com

/*
	把蛇画出来
	 */
	public void draw(Graphics g) {
		g .setColor(Color.yellow);
		for(Node n=head;n!=null;n=n.next){
			n.draw(g);
			g.setColor(Color.green);
		}

	}

在SnakeGrid.java中创建蛇uUN少儿编程网-https://www.pxcodes.com

Snake snake = new Snake();//创建蛇

并在paint中调用snake.draw(g);uUN少儿编程网-https://www.pxcodes.com

 /**
     * 设置画笔
     * @param g
     */
    @Override
    public void paint(Graphics g) {
        super.paint(g);
        image.paintIcon(this, g, 0, 0); //设置背景图片
        snake.draw(g);
    }
  • 控制蛇的移动

在snake中增加键盘调用的方法:uUN少儿编程网-https://www.pxcodes.com

/*
	调用键盘的上下左右键
	head.dir记录现在操作的是什么按钮,从而更改蛇的状态
	向上移送时,下键失效,其他四个方向也是如此判断
	 */
	public void keyboard(KeyEvent e) {
		switch(e.getKeyCode()){
			case KeyEvent.VK_UP:
				if(head.dir.equals(down)){
					break;
				}
				head.dir=up;
				break;
			case KeyEvent.VK_DOWN:
				if(head.dir.equals(up)){
					break;
				}
				head .dir=down;
				break;
			case KeyEvent.VK_LEFT:
				if(head.dir.equals(right)){
					break;
				}
				head.dir=left;
				break;
			case KeyEvent.VK_RIGHT:
				if(head.dir.equals(left)){
					break;
				}
				head.dir=right;
				break;
			default:
				break;
		}
	}

增加头部的方法uUN少儿编程网-https://www.pxcodes.com

/*
增加头部
不管移动哪个方向都是在相应位置增加一个节点
 */
	public void addHead(){
		Node node = null;
		switch (head.dir){
			case "l":
				node = new Node(head.row,head.col-1,head.dir);
				break;
			case "r":
				node = new Node(head.row,head.col+1,head.dir);
				break;
			case "u":
				node = new Node(head.row-1,head.col,head.dir);
				break;
			case "d":
				node = new Node(head.row +1,head.col,head.dir);
				break;
			default:
				break;
		}
		node.next=head;
		head.pre=node;
		head=node;

	}

删除尾部的方法uUN少儿编程网-https://www.pxcodes.com

/*
删除尾部 删除**后一个节点
 */
public void deleteTail(){
	tail.pre.next=null;
	tail=tail.pre;
}

增加move的方法uUN少儿编程网-https://www.pxcodes.com

/*
增加move方法 一增一减,实现蛇的移动
 */
	public void move() {
		addHead();
		deleteTail();
	}

在SnakeGrid中创建一个线程类,用来执行蛇的移动方法uUN少儿编程网-https://www.pxcodes.com

class SnakeThread extends Thread{
        @Override
        public void run() {
        while (true){
        try {
            Thread.sleep(300);//沉睡300ms 用来控制蛇的移动速度
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        repaint();//每次沉睡完之后都执行一下repaint()方法,重新绘画
        } 
     }

print方法中调用remove 在SnakeGrid()创建键盘监听事件:uUN少儿编程网-https://www.pxcodes.com

package Sanke;

import java.applet.Applet;
import java.applet.AudioClip;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URI ;
import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

/**
 * @author Swyee
 **/
public class SnakeGrid extends JPanel {
    Snake snake = new Snake();//创建蛇
    ImageIcon image = new ImageIcon("Snake/sky.jpg");//图片文件地址
    File f= new File("Snake/music.wav");//音乐文件地址
    SnakeThread snakeThread = new SnakeThread();
    SnakeGrid(){
        this.setBounds(0, 0, 700, 400);
        this.setBackground(Color.black);
        snakeThread.start();
        this.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                snake.keyboard(e);
            }
        });
    }

    /**
     * 设置画笔
     * @param g
     */
    @Override
    public void paint(Graphics g) {
        super.paint(g);
        image.paintIcon(this, g, 0, 0); //设置背景图片
        snake.move();//蛇移动
        snake.draw(g);
    }
    //读取音乐文件
    void Music (){
        try {
            URI uri = f.toURI();
            URL url = uri.toURL();
            AudioClip aau= Applet.newAudioClip(url);
            aau.loop();
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    class SnakeThread extends Thread{
        @Override
        public void run() {
        while (true){
        try {
            Thread.sleep(300);//沉睡300ms 用来控制蛇的移动速度
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        repaint();//每次沉睡完之后都执行一下repaint()方法,重新绘画
        }
     }
}

}

执行main方法可以看到可以通过键盘进行控制移动了uUN少儿编程网-https://www.pxcodes.com

3.24创建蛇的食物

增加食物的实例 以及画食物的方法 反映食物坐标的方法 新建Food.javauUN少儿编程网-https://www.pxcodes.com

package Sanke;

import java.awt.*;

public class Food {
	int row;
	int col;
	
	
	Food(){
		row = 10;//创建食物的大小
		col  =10;
	}
	public void repearShow(){
		row = (int)(Math.random()*18);//生成随机数 乘以食物的大小可以得到坐标
		col = (int)(Math.random()*32);
	} 
	public void draw(Graphics g) {//把食物画出来
		g.setColor(Color.red);
		g.fillRect(col*20, row*20, 20, 20);//表示坐标
		
	}
	public Rectangle getCoordinates(){
		return new Rectangle(col*20,row*20,20,20);//获得食物的坐标
		
	}


}

修改Snake.java 增加判断蛇头位置的方法,修改午无参构造方法,改为有参构造,把food添加进来 修改move方法uUN少儿编程网-https://www.pxcodes.com

package Sanke;


import java.awt.*;
import java.awt.event.KeyEvent;


/**
 * @author Swyee
 */
public class Snake {
	public static final int span=20;//间距
	public static final String up="u";
	public static final String down="d";
	public static final String left="l";
	public static final String right="r";
	Node body;//蛇的身体
	Node head;//蛇的头部
	Node tail;//蛇的头部
	Food food;
	Snake(Food food){
		body = new Node(5,20,left);
		head = body;
		tail =  body;
		this.food=food;
	}
	class Node{
		int row;
		int col;
		String dir;//方向
		Node next;
		Node pre;
		Node(int row,int col,String dir){
			this.row = row;
			this.col = col;
			this.dir = dir;
		}
		public void draw(Graphics g) {
			g.fillOval(col*span, row*span, span,span);//坐标

		}
	}
	/*
	把蛇画出来
	 */
	public void draw(Graphics g) {
		g.setColor(Color.yellow);
		for(Node n=head;n!=null;n=n.next){
			n.draw(g);
			g.setColor(Color.green);
		}

	}
	/*
	调用键盘的上下左右键
	head.dir记录现在操作的是什么按钮,从而更改蛇的状态
	向上移送时,下键失效,其他四个方向也是如此判断
	 */
	public void keyboard(KeyEvent e) {
		switch(e.getKeyCode()){
			case KeyEvent.VK_UP:
				if(head.dir .equals(down)){
					break;
				}
				head.dir=up;
				break;
			case KeyEvent.VK_DOWN:
				if(head.dir.equals(up)){
					break;
				}
				head.dir=down;
				break;
			case KeyEvent.VK_LEFT:
				if(head.dir.equals(right)){
					break;
				}
				head.dir=left;
				break;
			case KeyEvent.VK_RIGHT:
				if(head.dir.equals(left)){
					break;
				}
				head.dir=right;
				break;
			default:
				break;
		}
	}
/*
增加头部
 */
	public void addHead(){
		Node node = null;
		switch (head.dir){
			case "l":
				node = new Node(head.row,head.col-1,head.dir);
				break;
			case "r":
				node = new Node(head.row,head.col+1,head.dir);
				break;
			case "u":
				node =  new Node(head.row-1,head.col,head.dir);
				break;
			case "d":
				node = new Node(head.row+1,head.col,head.dir);
				break;
			default:
				break;
		}
		node.next=head;
		head.pre=node;
		head=node;

	}
/*
删除尾部
 */
public void deleteTail(){
	tail.pre.next=null;
	tail=tail.pre;
}
/*
增加move方法
 */
	public void move() {
		addHead();
		if(this.getSnakeRectangle().intersects(food.getCoordinates())){//当蛇头与食物重合的时候 蛇吃食物 食物刷新,不再删除尾巴,达到一种蛇增长的要求

			food.repearShow();
		}else{
			deleteTail();
		}
	}
	public Rectangle getSnakeRectangle(){//获取蛇头的坐标

		return new Rectangle(head.col*span,head.row*span,span,span);

	}
}

在修改snakegrid.java 贪吃蛇的功能就基本实现了uUN少儿编程网-https://www.pxcodes.com

Food food = new Food();
    Snake snake = new Snake( food);//创建蛇
    ImageIcon image = new ImageIcon("Snake/sky.jpg");//图片文件地址
    File f= new File("Snake/music.wav");//音乐文件地址
    SnakeThread snakeThread = new SnakeThread();
 @Override
    public void paint(Graphics g) {
        super.paint(g);
        image.paintIcon(this, g, 0, 0); //设置背景图片
        snake.move();//蛇移动
        snake.draw(g);
        food.draw(g);
    }

3.2.5增加蛇的存活状态

在Snake中增加蛇的存活状态,每一次移动都判断下是否存活,修改SnakeGrid的线程,执行时进行判断是否存活uUN少儿编程网-https://www.pxcodes.com

public void DeadOrLive(){//超出边框范围 蛇头撞到身体 游戏结束
		if(head.row<0 || head.row>rows-1 || head.col<0 ||head.col>cols){
			islive=false;
		}
		for(Node n=head.next;n!=null;n=n.next){
			if(n.col==head.col && n.row==head.row){
				islive= false;
			}
		}

	}
public void move() {
		addHead();
		if(this.getSnakeRectangle().intersects(food.getCoordinates())){//当蛇头与食物重合的时候 蛇吃食物 食物刷新,不再删除尾巴,达到一种蛇增长的要求

			food.repearShow();
		}else{
			deleteTail();
		}
		DeadOrLive();//每移动一步都要判断一下是否存活
	}
 class SnakeThread extends Thread{
        boolean flag = true;
        @Override
        public void run() {
            while (Snake.islive && flag) {
                try {
                    Thread.sleep(300);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                if (Snake.islive ) {
                    repaint();
                }

            }
            if (!flag == false) {
                JOptionPane.showMessageDialog(SnakeGrid.this, "游戏结束");
            }
        }

3.2.6 增加按钮

  • **后的时候,给这个小游戏增加几个按钮,用来实现暂停开始
    新建Button.java
package Sanke;


import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Button extends JPanel{
	public static  boolean isMove=true;//表示运行状态 
	SnakeGrid snakeGrid;
	Button(SnakeGrid snakeGrid){
		this.snakeGrid=snakeGrid;
		this.setBounds(0, 400, 700, 100);
		JButton jb1 = new JButton("暂停游戏");
		JButton jb2 = new JButton("继续游戏");
		JButton jb3 = new JButton("重新游戏");
		this.add(jb1);
		this.add(jb2);
		this.add(jb3);
		jb1.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				isMove=false;
				
			}
		});
         jb2.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				isMove=true;
				snakeGrid.setFocusable(true);
				snakeGrid.requestFocus();
			}
		});
         jb3.addActionListener(new ActionListener() {
 			
 			@Override
 			public void actionPerformed(ActionEvent e) {//重新创建蛇等 重新开始游戏
				snakeGrid.snakeThread.stopThread();
 				
 				Food food = new Food ();
 				snakeGrid.food=food;
 				snakeGrid.snake=new Snake(food);
 				Snake.islive=true;
 				isMove=true;
 				SnakeGrid.SnakeThread st = snakeGrid.new SnakeThread();
 				snakeGrid.snakeThread=st;
 				st.start();
 				
 				snakeGrid.setFocusable(true);
 				snakeGrid.requestFocus();
 			}
 		});

   }
}

再修改SnakeGrid中的threaduUN少儿编程网-https://www.pxcodes.com

package Sanke;

import java.applet.Applet;
import java.applet.AudioClip;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

/**
 * @author Swyee
 **/
public class SnakeGrid extends JPanel {
    Food food = new Food();
    Snake snake = new Snake(food);//创建蛇
    ImageIcon image = new ImageIcon("Snake/sky.jpg");//图片文件地址
    File f= new File("Snake/music.wav");//音乐文件地址
    SnakeThread snakeThread = new SnakeThread();
    SnakeGrid(){
         this.setBounds(0, 0, 700, 400);
        this.setBackground(Color.black);
        snakeThread.start();
        this.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                snake.keyboard(e);
            }
        });
    }

    /**
     * 设置画笔
     * @param g
     */
    @Override
    public void paint(Graphics g) {
        super.paint(g);
        image.paintIcon(this, g, 0, 0); //设置背景图片
        snake.move();//蛇移动
        snake.draw(g);
        food.draw(g);
    }
    //读取音乐文件
    void Music(){
        try {
            URI uri = f.toURI();
            URL url = uri.toURL();
            AudioClip aau= Applet.newAudioClip(url);
            aau.loop();
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    class SnakeThread extends Thread{
        boolean flag = true ;
        @Override
        public void run() {
            while(Snake.islive &&flag){
                try {
                    Thread.sleep(300);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                if(Snake.islive&& Button.isMove){
                    repaint();
                }

            }
            if(!flag==false){
                JOptionPane.showMessageDialog(SnakeGrid.this, "游戏结束");
            }

        }
        public void stopThread(){
            flag=false;
        }
    }
}



在主页面中把按钮添加上去uUN少儿编程网-https://www.pxcodes.com

package Sanke;

import javax.swing.*;

/**
 * @author Swyee
 **/
public class SnakeGame extends JFrame {
    SnakeGrid snakeGrid= new SnakeGrid();
    Button button = new Button(snakeGrid);
    SnakeGame(){
        this.setBounds(100, 50, 700, 500);//设置窗口大小
        this.setLayout(null);//更改layout 以便添加组件
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置关闭窗口的状态
        this.setResizable(false); //窗口不可以改变大小
        this.add(snakeGrid);
        this.add(button);
        //设置焦点
        snakeGrid.setFocusable(true);
        snakeGrid.requestFocus();
        snakeGrid.Music();//调用打开音乐的方法
        this.setVisible(true);//设置焦点状态为true
    }
    public static void main(String[] args) {
        new SnakeGame();
    }

}

到这里这个小游戏就全部做完了,当然也可以在其基础上增加其他功能uUN少儿编程网-https://www.pxcodes.com

也可以把这个小游戏打成jar包的形式进行运行,将打好的jar包和资源文件放在同一个目录下,即可正常运行访问uUN少儿编程网-https://www.pxcodes.com

四、打jar包

  1. idea打jar包方式
  2. 命令行运行jar包方式

源码

**后附上源码链接:uUN少儿编程网-https://www.pxcodes.com

链接: pan.baidu.com/s/1iUmSUn
提取码: zxsk作者:swyee
链接:blog.csdn.net/qq_444332
来源:CSDN博客uUN少儿编程网-https://www.pxcodes.com

版权声明:标题:少儿编程scratch贪吃蛇代码,地址:https://www.pxcodes.com/baike/1614576349145476.html 为少儿编程网编辑整理发布,转载请注明出处!如部分段落侵犯您的权益,请联系我们处理,谢谢!【2021-03-01 13:25:48】

贪吃蛇代码 少儿编程