`
hereson
  • 浏览: 1450299 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

賽車程式

    博客分类:
  • Pv3d
阅读更多
package { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.utils.*;  import org.papervision3d.cameras.*; import org.papervision3d.materials.*; import org.papervision3d.objects.*; import org.papervision3d.scenes.*; import flash.ui.Keyboard;  [SWF(backgroundColor="#000000", frameRate="60", width="400", height="400")] public class T6step1 extends Sprite {  private static var PI:Number = Math.PI;  private static var TH:Number = PI / 180;    private var container:Sprite;  private var scene:MovieScene3D;  private var camera:Camera3D;    private var map:Sprite;  private var nextPoint:DisplayObject3D;  private var keyCodeDown:Array = null;     public function T6step1()  {   //背景   var bg:Sprite = new Sprite();   addChild(bg);   bg.graphics.beginFill(0x999999);   bg.graphics.drawRect(0, 0, 400, 400);   bg.graphics.endFill();   // initialize the objects   init3D();      // add a listener for the 3D loop   addEventListener(Event.ENTER_FRAME, loop3D);      //地圖   map = new Sprite();   addChild(map);   map.x = 200;   map.y = 200;      stage.focus = this;   this.stage.addEventListener(KeyboardEvent.KEY_DOWN, this.keyDownHandler);   this.stage.addEventListener(KeyboardEvent.KEY_UP, this.keyUpHandler);  }    private function init3D():void{      container = new Sprite();   addChild(container);      container.x = 200;   container.y = 200;      scene = new MovieScene3D(container);      camera = new Camera3D();   camera.zoom = 15;   camera.focus = 100;   //跑道   var newX:Number;   var newZ:Number;   for(var i:int=0; i<360; i+=10){    newX = 900 * formatNum(Math.cos(i*TH), 3);    newZ = 900 * formatNum(Math.sin(i*TH), 3);    scene.addChild(new Cone(new ColorMaterial(0xffcc00), 5, 30, 8, 6, {x:newX, z:newZ}),  "myCone1_" + i);    newX = 800 * formatNum(Math.cos(i*TH), 3);    newZ = 800 * formatNum(Math.sin(i*TH), 3);    scene.addChild(new Cone(new ColorMaterial(0xffcc00), 5, 30, 8, 6, {x:newX, z:newZ}),  "myCone2_" + i);   }      //移動控點   nextPoint = scene.addChild(new DisplayObject3D(), "nextPoint");  }    private function loop3D(event:Event):void{    //camera.hover(0, container.mouseX / 20, container.mouseY / 10);      if(keyCodeDown!=null){    var isMoving:Boolean = false;    for(var i:int=0; i<keyCodeDown.length; i++){     if(keyCodeDown[i]==Keyboard.UP){      nextPoint.moveForward(30);      isMoving = true;     }else if(keyCodeDown[i]==Keyboard.DOWN){      nextPoint.moveBackward(25);      isMoving = true;     }    }    if(isMoving){     for(var i:int=0; i<keyCodeDown.length; i++){      if(keyCodeDown[i]==Keyboard.LEFT){       nextPoint.rotationY-=5;      }else if(keyCodeDown[i]==Keyboard.RIGHT){       nextPoint.rotationY+=5;      }     }    }   }      camera.target = nextPoint;   camera.x = nextPoint.x;   camera.y = nextPoint.y;   camera.z = nextPoint.z;   camera.rotationY = nextPoint.rotationY;   camera.moveBackward(200);   camera.moveUp(30);   //camera.lookAt(nextPoint);      scene.renderCamera(camera);      //地圖   map.graphics.clear();   map.graphics.lineStyle(1);   map.graphics.drawRect(-50, -50, 100, 100);      //方塊群   var myCone:DisplayObject3D;   for(var i:int=0; i<360; i+=10){    myCone = scene.getChildByName("myCone1_" + i);    map.graphics.drawCircle((myCone.x)/20, (myCone.z)/20, 1);    myCone = scene.getChildByName("myCone2_" + i);    map.graphics.drawCircle((myCone.x)/20, (myCone.z)/20, 1);   }      map.graphics.lineStyle(1, 0xff0000);   map.graphics.drawCircle((nextPoint.x)/20, -1*(nextPoint.z)/20, 1);  }    public function keyDownHandler(event:KeyboardEvent):void{   trace(event.keyCode);   if(keyCodeDown==null){    keyCodeDown = new Array();    keyCodeDown.push(event.keyCode);   }else{    for(var i:int=0; i<keyCodeDown.length; i++){     if(keyCodeDown[i]==event.keyCode){      return;     }     keyCodeDown.push(event.keyCode);    }   }  }    public function keyUpHandler(event:KeyboardEvent):void{   if(keyCodeDown!=null){    for(var i:int=keyCodeDown.length-1; i>=0; i--){     if(keyCodeDown[i]==event.keyCode){      keyCodeDown.splice(i, 1);     }    }    if(keyCodeDown.length==0){     keyCodeDown = null;    }   }  }    private function formatNum(num:Number, cnt:Number):Number{   return Math.round(num * Math.pow(10, cnt)) / Math.pow(10, cnt);  } }}
分享到:
评论

相关推荐

    简单赛车游戏——初级编程的模板

    【赛车游戏】是一款初级编程的学习资源,旨在帮助初学者通过实际操作理解编程的基本概念和技巧。这款游戏采用立体图形,提供了一种生动有趣的编程实践环境,让学习者在编写代码的同时,能够直观地看到程序运行的结果...

    HTML5《赛车》完整源码及创建教程 

    这些特性使得开发者能够构建出具有动态图形、音频和视频的富互联网应用程序,而无需依赖Flash或其他插件。 1. **语义化标签**:HTML5引入了新的语义化标签,如、、、和等,这些标签有助于提高网页内容的可读性和可...

    saiche.rar_赛车

    【赛车游戏程序开发】 在IT领域,赛车游戏是一种广受欢迎的娱乐形式,它结合了编程技术、图形设计和游戏逻辑。对于那些希望学习C++编程并深入理解游戏开发的初学者来说,"saiche.rar_赛车"这个压缩包提供了一个宝贵...

    赛车游戏(适合初学者研究)

    在本项目中,"赛车游戏(适合初学者研究)"是一个专为编程初学者设计的教程,旨在帮助他们学习和理解游戏开发的基本概念。通过使用VC++这一经典的编程语言,初学者可以逐步掌握游戏编程的核心技能。以下是这个项目中...

    SAICHE.rar_树木_红绿灯_赛车_赛车 游戏 c++_赛车游戏

    在游戏设计中,环境是至关重要的一环,它可以为玩家营造出沉浸式的游戏体验。树木和建筑是游戏场景的重要组成部分,它们可以模拟真实世界中的赛道环境,让玩家在虚拟世界中感受到速度与激情。实现这些元素通常需要...

    Android游戏源码安卓单机3D赛车游戏项目.zip

    《Android游戏源码安卓单机3D赛车游戏项目》是一个专为Android平台设计的3D赛车游戏开发资源,它提供了一整套完整的源代码,帮助开发者深入理解Android游戏开发技术,特别是3D图形渲染和物理引擎的应用。在这个项目...

    赛车。-少儿编程scratch项目源代码文件案例素材.zip

    Scratch是麻省理工学院(MIT)媒体实验室“终身幼儿园团队”开发的一款面向少年儿童的图形化编程工具,旨在通过拖拽积木式的编程语块,让孩子们在玩耍中学习编程基础知识。 【描述】"赛车。-少儿编程scratch项目源...

    HTML5赛车漂移.zip

    6. **响应式设计**:为了适应不同设备的屏幕尺寸,游戏可能采用了响应式设计,通过媒体查询(Media Queries)调整布局和元素大小,确保在不同分辨率的设备上都能呈现良好的视觉效果。 7. **Web Workers**:为了提高...

    开发html5 2d 赛车游戏以及打包发布为手机APP 第一话 工欲善其事

    在本教程中,我们将探讨如何开发一款HTML5 2D赛车游戏,并将其打包发布为手机应用程序。这是一项涉及Web技术和移动应用开发的综合任务,涵盖了HTML、CSS、JavaScript(特别是针对游戏开发的库如 Phaser)以及移动端...

    开发html5 2d 赛车游戏以及打包发布为手机APP 第三话 拖动我们的主角车子

    在本教程中,我们将深入探讨如何使用HTML5技术开发2D赛车游戏,并将其打包发布为手机应用程序。HTML5因其跨平台兼容性和丰富的图形处理能力,成为制作网页游戏的理想选择。在第三话中,我们将专注于如何实现游戏的...

    185.遥控赛车.rar

    不过,根据上下文,这可能是有关遥控赛车的项目文件、源代码、教程文档,或者是一个模拟遥控赛车的软件应用程序。 在IT领域,遥控赛车可能涵盖以下知识点: 1. **嵌入式系统**:遥控赛车的核心是其内置的微控制器...

    ChinaFSAE方程式赛车悬架系统设计分析报告.doc

    本次毕业设计主要任务是对方程式赛车的悬架系统进行设计分析,包括但不限于:了解FSAE的底盘规则、研究悬架系统的基本原理和设计要求、选择合适的轮辋和轮胎、确定赛车的轴距和轮距、选择悬架结构形式、绘制二维图形...

    js_car.rar_JS-CAR_js游戏_js赛车游戏_纯js_赛车游戏

    JavaScript游戏需要关注性能,可能使用了一些优化技巧,如减少DOM操作,缓存常量,避免全局变量,或者使用Web Workers处理复杂计算以防止阻塞主线程。 总的来说,"JS-CAR"项目不仅是一个娱乐应用,也是一个学习...

    opencv小游戏_赛车游戏有注释源码

    在这个“opencv小游戏_赛车游戏”项目中,我们有机会深入理解OpenCV如何用于创建交互式游戏。下面将详细探讨这个游戏的实现原理和关键知识点。 1. **基础概念** - **OpenCV**:OpenCV是一个跨平台的计算机视觉库,...

    LOGO支持库应用之海龟赛车.rar

    1. **教程文档**:详细介绍了如何使用LOGO语言控制海龟赛车,包括基本的移动、转向命令,以及更复杂的逻辑控制结构如循环和条件语句。 2. **示例代码**:提供了预设的海龟赛车代码,让学生能够立即看到结果,同时也...

    赛车-少儿编程scratch项目源代码文件案例素材.zip

    1. "scratch":Scratch是由麻省理工学院(MIT)的“终身幼儿园团队”开发的一款面向儿童的图形化编程工具,它通过积木式的编程语块,让编程变得简单易懂。 2. "源代码":源代码是程序的原始形式,可以被程序员阅读、...

    html5实现的极品赛车游戏源码.zip

    10. **响应式设计**:HTML5支持响应式设计,使得游戏能在不同屏幕尺寸和设备上运行良好,无论是桌面电脑还是移动设备。 11. **AJAX异步通信**:虽然游戏主要是离线运行,但在某些情况下,如排行榜、在线多人对战,...

    小小赛车-少儿编程scratch项目源代码文件案例素材.zip

    Scratch是由麻省理工学院(MIT)媒体实验室“终身幼儿园团队”开发的,通过拖拽积木式的编程语块,让编程变得简单易懂,适合初学者尤其是儿童入门。 在这个项目中,孩子们将有机会了解和掌握以下编程知识点: 1. *...

    H5真实3D赛车只支持横屏.zip

    - `app.js`: 这可能是游戏的主要应用程序逻辑代码,包含了游戏的控制、碰撞检测、得分计算等功能。 - `howler.js`: 是一个强大的HTML5音频管理库,用于播放、管理和控制游戏中的音效和背景音乐。 - `viewporter....

    疯狂赛车V1.0(1)-少儿编程scratch项目源代码文件案例素材.zip

    源代码是程序的灵魂,是开发者与计算机之间的桥梁。在“疯狂赛车V1.0(1).sb3”这个压缩文件中,包含了整个游戏的所有编程逻辑。sb3文件是Scratch 3.0版本的项目文件格式,包含了图形化编程块的序列、变量、角色、...

Global site tag (gtag.js) - Google Analytics