最近学ActionScript3.0  以下为自己写的一个小游戏。尽量以最少的代码,实现功能

游戏原理:看代码注释

游戏规则:类似于【劲舞团】游戏,玩家可以按UP,DOWN,LEFT,RIGHT键来操控游戏。

打掉相应的箭头则得分,否则失手。

箭头落到底线没有被打掉,则为失手。

失手10次,游戏结束。

得分过30,升一级。难度加大。

先建一个箭头的类Baby.as   。提供四种不同造型的箭头

package
{
import flash.display.Sprite;
import flash.filters.ConvolutionFilter;
/**
* ...
* @author kkkloveyou
*/
public class Baby extends Sprite
{
private var color:uint = 0xFFFFFF;
private var direction:uint;
private const LEFT:uint = 37;
private const RIGHT:uint = 39;
private const UP:uint = 38;
private const DOWN:uint = 40;
public  var flag:int = 0;
public function Baby(direction:uint):void
{
this.direction = direction;
switch (direction) {
case LEFT:
drawLeft();
break;
case RIGHT:
drawRight();
break;
case UP:
drawUp();
break;
case DOWN:
drawDown();
break;
default:
break;
}
}
public  function drawRight():void {
graphics.lineStyle(3,0xff0000);//左面
graphics.moveTo(-60,-30);
graphics.lineTo(-60,30);
graphics.lineTo(30, 30);
graphics.lineTo(30,40);
graphics.lineTo(60, 0);
graphics.lineTo(30,-40);
graphics.lineTo(30, -30);
graphics.lineTo( -60, -30);
flag = 39;
}
public  function drawLeft():void {
graphics.lineStyle(3,0x00ff00);//右面
graphics.moveTo(60,-30);
graphics.lineTo(60,30);
graphics.lineTo(-30, 30);
graphics.lineTo(-30,40);
graphics.lineTo(-60, 0);
graphics.lineTo(-30,-40);
graphics.lineTo(-30, -30);
graphics.lineTo(60, -30);
flag = 37;
}
public  function drawUp():void {
graphics.lineStyle(3,0x00ffff);//上面
graphics.moveTo(-30,60);
graphics.lineTo(30,60);
graphics.lineTo(30, -30);
graphics.lineTo(40,-30);
graphics.lineTo(0, -60);
graphics.lineTo(-40,-30);
graphics.lineTo(-30, -30);
graphics.lineTo( -30, 60);
flag = 38;
}
public  function drawDown():void {
graphics.lineStyle(3,0x001177);//下面
graphics.moveTo(-30,-60);
graphics.lineTo(30,-60);
graphics.lineTo(30, 30);
graphics.lineTo(40,30);
graphics.lineTo(0, 60);
graphics.lineTo(-40,30);
graphics.lineTo(-30, 30);
graphics.lineTo( -30, -60);
flag = 40;
}
}
}
再建一个控制类Main.as  用来控制游戏
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.ui.Keyboard;
public class Main extends Sprite
{
public var arr:Array;//储存下落箭头的数组
public var time:uint;
public var errorTxt:TextField;//错误显示文本
public var trueTxt:TextField;//正确显示文本
public var levelTxt:TextField;//等级文本
public var meTxt:TextField;//作者文本
public var errorCount:int = 0;//错误总计变量
public var trueCount:int = 0;//正确总计变量
public var levelCount:int = 1;//当前关卡等级
public var speed:uint = 5;    //箭头移动速度
public function Main(){
init();
}
public function init():void{
this.addEventListener(Event.ENTER_FRAME,loopHandler);
stage.addEventListener(KeyboardEvent.KEY_DOWN,downHandler);
arr = new Array();
time = 0;
errorTxt = new TextField();
trueTxt = new TextField();
levelTxt = new TextField();
meTxt = new TextField();
errorTxt.text = "失手: "+errorCount;
trueTxt.text = "得分: " + trueCount;
levelTxt.text = "等级: " + levelCount;
meTxt.text = "卫哥作品";
levelTxt.x = 50;
levelTxt.y = 50;
errorTxt.x = 50;
errorTxt.y = 150;
trueTxt.x = 50;
trueTxt.y = 250;
meTxt.x = 700;
meTxt.y = 550;
this.addChild(errorTxt);
this.addChild(trueTxt);
this.addChild(levelTxt);
this.addChild(meTxt);
}
public function downHandler(event:KeyboardEvent):void{
errorCount++;
if (errorCount >= 10) {
stage.removeEventListener(KeyboardEvent.KEY_DOWN, downHandler);
this.removeEventListener(Event.ENTER_FRAME,loopHandler);
}
for(var i:Number = arr.length-1;i>=0;i--){
//判断键盘按下的键值是否和场景里的字母符合.如果符合则消去
var baby:Baby = arr[i] as Baby;
if ( baby ){
if(baby.flag == event.keyCode){
this.removeChild(arr[i]);
arr.splice(i,1);
trueCount++;
errorCount--;
break;
}
}
}
if (trueCount >= 30) {
levelCount++;         //级数升级,得手清零
speed += 3;              //级数升级,速度增大,难度增大
trueCount = 0;
}
errorTxt.text = "失手: "+errorCount;
trueTxt.text = "得分: " + trueCount;
levelTxt.text = "等级: " + levelCount
}
public function loopHandler(event:Event):void{
time++;
if(time>=10){
time = 0;
var baby:Baby = new Baby(int(Math.random() * 4) + 37);     //随机产生箭头类型
baby.x = stage.stageWidth / 2;
baby.y = 30;
this.addChild(baby);
arr.unshift(baby);
}
for(var i:Number = arr.length-1;i>=0;i--){
arr[i].y+=speed;                                              //箭头速度
if(arr[i].y>=stage.stageHeight){
this.removeChild(arr[i]);
arr.splice(i,1);
errorCount++;
errorTxt.text = "失手: "+errorCount;
break;
}
}
if (errorCount >= 10) {
stage.removeEventListener(KeyboardEvent.KEY_DOWN, downHandler);
this.removeEventListener(Event.ENTER_FRAME,loopHandler);
}
}
}
}

项目演示地址:http://up.qqhello.com/qzone/73e11069e924b6d6df5198f9440a2403.swf

【百行代码说游戏】ActionScript3.0 小游戏 【劲舞团】源码+演示相关推荐

  1. Qt小游戏之数字华容道(百行代码搭雏形,可玩;含源码+注释)

    文章目录 一.数字华容道,样图如下 二.废话少说直接上代码 1.首先是代码文件分析 2.CLabel的源码 3.CMainWindow的源码 4.main文件 总结 一.数字华容道,样图如下 相信大家 ...

  2. 干货干货~C语言版学生成绩管理系统【数据结构课程设计,百行代码实现功能强化版(内附源码)】

    前言 关于这个系统是我们专业要求做的一个课程设计,本来是上个学期交的,我也是上个学期弄好的,打算发出来,但是一直没交上去(怕交上去之前发出来老师说我作弊...),今天就把我做的这个系统分享给大家,不足 ...

  3. python小游戏-16行代码实现3D撞球小游戏!-源码下载

    python小游戏-16行代码实现3D撞球小游戏!-源码下载 所属网站分类: 资源下载 > python小游戏 作者:搞笑 链接: http://www.pythonheidong.com/bl ...

  4. cvtcolor python opencv_13行代码实现:Python实时视频采集(附源码)

    程序逻辑 Python实时视频采集程序主要流程共分为10个步骤,具体如下图所示: 流程描述: 库文件导入:导入程序依赖的python安装包: 摄像头管理对象创建和初始化:是对opencv VideoC ...

  5. python100行代码-怎样写贪吃蛇小游戏?用100行python代码轻松解决!

    大家小时候都玩过贪吃蛇吧?小编小时候可喜欢拿爸妈的手机玩了,厉害着呢!今天,小编就来用100行代码实现一个简易版的贪吃蛇.在网上,贪吃蛇教程蛮多的,但要安装蛮多库的,而且也不够清晰,今天的代码比较短, ...

  6. Pygame实战项目:用300行代码写出贪吃蛇小游戏

    贪吃蛇是一款逻辑清晰.操作简单.老少咸宜.备受欢迎的休闲小游戏. 下面就给大家介绍一下贪吃蛇游戏的基本原理,以及实现贪吃蛇所需要的相关方法. 一.主要思路 我们的贪吃蛇游戏将主要包括三个核心模块,分别 ...

  7. C语言200行代码写一个贪吃蛇小游戏

    先看一眼主程序 一般小游戏的大致框架就是这个样子,这里主要分成画面的显示,与用户相关的更新,与用户无关的更新等三个部分.(完整代码附于文末) int main(int argc, char *argv ...

  8. 大神程序员几行代码增粉 100W 最后入狱,附源码。

    背景 几行代码让他增粉 100W 最后入狱,他就是著名 Samy 蠕虫病毒的作者 Samy Kamkar,通过 Samy 蠕虫成功为自己新增 100W 粉丝最后入狱.这也是一个里程碑,世界上第一只 & ...

  9. python屏幕文字识别_学会python就是如此任性,15行代码搞定图片文字识别,附源码...

    python作为一门高级编程语言,它的定位是优雅.明确和简单.阅读Python编写的代码感觉像在阅读英语一样,这让使用者可以专注于解决问题而不是去搞明白语言本身.Python虽然是基于C语言编写,但是 ...

最新文章

  1. 详解目标检测之Neck选择
  2. 关于无服务器(Serverless)架构你要搞懂的8件事
  3. java hashmap 缓存
  4. 有关android UI 线程
  5. Ubuntu16.04装机5:安装Anaconda3
  6. 程式CMS V4黑色炫酷DJ音乐门户网站源码模板
  7. 表格排版及其表格嵌套
  8. 基于51单片机的红外遥控电风扇
  9. python批量下载兰科植物网站的图片,并重命名文件
  10. 全景解密量子信息技术:高层集中学习,国家战略,三大领域一文看懂
  11. idea项目不报错 启动时却提示一堆程序包找不到 的解决方法
  12. 浅谈oracle复合数据类型
  13. 数据库之互联网常用分库分表方案
  14. linux交互式进程初始化失败怎么办,“登录进程初始化失败 交互式登录进程初始化失败”的解决办法...
  15. 精心整理shell脚本100例(最新版)
  16. 2021011206贾天乐实验五
  17. UTC时间转PST时间,区分冬夏令时
  18. 路面机械车辆控制器SPC-CFMC-D28N40A资料
  19. Python实现经典机器学习案例——良/恶性性乳腺癌肿瘤完整数据预测
  20. python houdini_Houdini的python教程

热门文章

  1. iOS开发之好用的图片选择第三方TZImagePickerController
  2. Java注解@Mock和@InjectMocks及@Mock和@Spy之间的区别
  3. java+SpringBoot+HTML+Mysq基于Java语言开发的奶茶外卖平台
  4. 23种java设计模式之模板模式
  5. 深圳Java学习:分享几道真实的企业Java工程师笔试题
  6. 大胃王被禁了,自虐式测评呢?
  7. 【调剂】江苏师范大学2022年硕士研究生调剂复试工作公告
  8. 易福门信号模块AL2341的安装
  9. ReactNative 屏幕锁定横屏
  10. python画菱形的代码_题目:python 打印出如下图案(菱形):