贪吃蛇c语言代码flash小游戏代码谁有

前几天在园子里看到有人用,一时兴起也想用AS3.0做一个,虽然这个游戏已经被很多开发者做烂了,但是作为AS的初学者,重新做一遍也当是一种学习.
技术"难"点分析:
1.蛇身的构成可以用数组来存储一堆小球,将它们排列成连续的直线即可
2.蛇身的移动蛇头移动后,紧跟蛇头后的小球移动到蛇头原来的位置,然后...类推,后面的小球依次移动到前一个球的位置
3.碰撞检测蛇头移动时,如果超出舞台边界,则Game Over了;同样蛇头如果遇到了蛇身,同样也Over.
4.食物的处理在舞台上随机放一个小球,蛇头经过时,食物消失/蛇身加长(即数组中新追加一个小球)/食物重新随机定位
代码:仍然用到Make Things Move中的著名Ball类,不过为了记录下次小球应该移动到的位置,增加二个变量nextx,nexty,Ball类的完整定义如下:
import flash.display.S
public class Ball extends Sprite {
public var radius://半径
public var color://颜色
public var vx:Number=0;//x轴速度
public var vy:Number=0;//y轴速度
public var count:uint=0;//辅助计数变量
public var isDragged=//是否正在被拖动
public var vr:Number=0;//旋转速度
public var mass:Number = 1;//质量
public var nextx:Number=0;
public var nexty:Number=0;
public function Ball(r:Number=50,c:uint=0xff0000) {
this.radius=r;
this.color=c;
private function init():void {
graphics.beginFill(color);
graphics.drawCircle(0,0,radius);
graphics.endFill();
当然,就本游戏而言,里面有很多变量都可以删除掉,这里为了完整起见保留下来了,游戏核心代码:&
import flash.utils.T
var balls:A
var ballOriginCount:uint=3;
var radius:uint=10;
var sW:Number=stage.stageW
var sH:Number=stage.stageH
var speed:uint=200;//毫秒
var food:B
var rows:uint = sW/(2*radius);
var cols:uint = sW/(2*radius);
var isDead:Boolean=
var isPause:Boolean=
function init():void {
balls = new Array();
for (var i:uint=0; i&ballOriginC i++) {
var b:Ball=new Ball(radius,Math.random()*0xffffff);
balls.push(b);
b.nextx=b.x;
b.nexty=b.y;
addChild(b);
//刚开始时,让小球排成直线
for (i=1; i&ballOriginC i++) {
balls[i].x=balls[i-1].x-balls[i].
drawGrid();
//初始化食物
food=new Ball(radius*0.8,0x000000);
checkFoodPosition();
addChild(food);
stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDowmHandler);
tmr=new Timer(speed);
tmr.addEventListener(TimerEvent.TIMER,moveSnake);
tmr.start();
_gameover.visible=isD
_notice.visible=isP
function restart():void {
//先移除原有的蛇
for (var i:int=balls.length-1; i&=0; i--) {
removeChild(balls[i]);
//重来一切
balls.length=0;
ballOriginCount=3;
for (i=0; i&ballOriginC i++) {
var b:Ball=new Ball(radius,Math.random()*0xffffff);
balls.push(b);
b.nextx=b.x;
b.nexty=b.y;
addChild(b);
for (i=1; i&ballOriginC i++) {
balls[i].x=balls[i-1].x-balls[i].
_gameover.visible=isD
_notice.visible=isP
//方向控制
function keyDowmHandler(e:KeyboardEvent):void {
var b:Ball=balls[0];
if (e.keyCode==Keyboard.SPACE) {
isPause=! isP
if (isDead) {
restart();
_notice.visible=isP
} else if (e.keyCode==Keyboard.DOWN&&b.vx!=0) {
} else if (e.keyCode == Keyboard.UP && b.vx!=0) {
} else if (e.keyCode == Keyboard.LEFT && b.vy!=0) {
} else if (e.keyCode == Keyboard.RIGHT && b.vy!=0) {
function drawGrid() {
for (var i:uint= i&sW; i+=2*radius) {
graphics.lineStyle(1,0,0.1);
graphics.moveTo(i,0);
graphics.lineTo(i,sH);
for (i= i&sH; i+=2*radius) {
graphics.lineStyle(1,0,0.1);
graphics.moveTo(0,i);
graphics.lineTo(sW,i);
//蛇身的移动
function moveSnake(e:TimerEvent):void {
//如果暂停或挂掉,则不处理
if (isPause||isDead) {
var b:Ball=balls[0];
b.nextx=b.x+b.
b.nexty=b.y+b.
for (var j:uint=1; j&ballOriginC j++) {
var _b:Ball=balls[j];
_b.nextx=balls[j-1].x;
_b.nexty=balls[j-1].y;
for (j=0; j&ballOriginC j++) {
balls[j].x=balls[j].
balls[j].y=balls[j].
//边界检测
if (b.x&b.radius||b.x&sW-b.radius||b.y&b.radius||b.y&sH-b.radius) {
_gameover.visible=isD
_notice.visible = isD
//检测蛇头是否咬到了自己
for (j=1; j&ballOriginC j++) {
var target:Ball=balls[j];
if (b.x==target.x&&b.y==target.y) {
_gameover.visible=isD
_notice.visible = isD
//如果蛇头经过食物,则表示吃掉了
if (b.x==food.x&&b.y==food.y) {
//trace("吃掉了!");
var _newBall:Ball=new Ball(radius,Math.random()*0xffffff);
_newBall.x=-
_newBall.y=-
balls.push(_newBall);
addChild(_newBall);
food.visible=
ballOriginCount++;
makeFood();
//生成食物的新坐标
function makeFood() {
if (food.visible==false) {
checkFoodPosition();
food.visible=
if (food.alpha==1) {
food.alpha=0.5;
food.scaleX=food.scaleY=1.2;
food.alpha=1;
food.scaleX=food.scaleY=1;
function checkFoodPosition():void {
food.x=radius+int(Math.random()*rows)*2*
food.y=radius+int(Math.random()*cols)*2*
//检测食物的新坐标是否在&蛇身&上,如果是,则重新生成新坐标
var isWrongPositon:Boolean=
while (isWrongPositon) {
var checkFlag:Boolean=
for (var i:uint=0; i&ballOriginC i++) {
var b:Ball=balls[i];
if (b.x==food.y&&b.y==food.y) {
checkFlag=
if (!checkFlag) {
food.x=radius+int(Math.random()*rows)*2*
food.y=radius+int(Math.random()*cols)*2*
isWrongPositon=!checkF
源文件下载:
阅读(...) 评论() 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
【精品】嵌入式ARM的贪吃蛇游戏
下载积分:860
内容提示:贪吃蛇游戏 贪吃蛇小游戏 贪吃蛇游戏代码 贪吃蛇游戏下载 贪吃蛇游戏背景 贪吃蛇游戏设计代码 arm嵌入式 arm嵌入式系统
文档格式:DOC|
浏览次数:1|
上传日期: 13:18:50|
文档星级:
该用户还上传了这些文档
下载文档:【精品】嵌入式ARM的贪吃蛇游戏.DOC
官方公共微信诉求flash小游戏源代码……请知道的大侠速告诉我,谢谢_百度知道
诉求flash小游戏源代码……请知道的大侠速告诉我,谢谢
我有更好的答案
我有拼图,贪吃蛇,以及俄罗斯方块, flash8的
其他类似问题
flash小游戏的相关知识
您可能关注的推广回答者:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
Flash动画制作贪吃蛇游戏
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口

我要回帖

更多关于 flash小游戏 的文章

 

随机推荐