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); } }}
分享到:
相关推荐
【赛车游戏】是一款初级编程的学习资源,旨在帮助初学者通过实际操作理解编程的基本概念和技巧。这款游戏采用立体图形,提供了一种生动有趣的编程实践环境,让学习者在编写代码的同时,能够直观地看到程序运行的结果...
这些特性使得开发者能够构建出具有动态图形、音频和视频的富互联网应用程序,而无需依赖Flash或其他插件。 1. **语义化标签**:HTML5引入了新的语义化标签,如、、、和等,这些标签有助于提高网页内容的可读性和可...
【赛车游戏程序开发】 在IT领域,赛车游戏是一种广受欢迎的娱乐形式,它结合了编程技术、图形设计和游戏逻辑。对于那些希望学习C++编程并深入理解游戏开发的初学者来说,"saiche.rar_赛车"这个压缩包提供了一个宝贵...
在本项目中,"赛车游戏(适合初学者研究)"是一个专为编程初学者设计的教程,旨在帮助他们学习和理解游戏开发的基本概念。通过使用VC++这一经典的编程语言,初学者可以逐步掌握游戏编程的核心技能。以下是这个项目中...
在游戏设计中,环境是至关重要的一环,它可以为玩家营造出沉浸式的游戏体验。树木和建筑是游戏场景的重要组成部分,它们可以模拟真实世界中的赛道环境,让玩家在虚拟世界中感受到速度与激情。实现这些元素通常需要...
《Android游戏源码安卓单机3D赛车游戏项目》是一个专为Android平台设计的3D赛车游戏开发资源,它提供了一整套完整的源代码,帮助开发者深入理解Android游戏开发技术,特别是3D图形渲染和物理引擎的应用。在这个项目...
Scratch是麻省理工学院(MIT)媒体实验室“终身幼儿园团队”开发的一款面向少年儿童的图形化编程工具,旨在通过拖拽积木式的编程语块,让孩子们在玩耍中学习编程基础知识。 【描述】"赛车。-少儿编程scratch项目源...
6. **响应式设计**:为了适应不同设备的屏幕尺寸,游戏可能采用了响应式设计,通过媒体查询(Media Queries)调整布局和元素大小,确保在不同分辨率的设备上都能呈现良好的视觉效果。 7. **Web Workers**:为了提高...
在本教程中,我们将探讨如何开发一款HTML5 2D赛车游戏,并将其打包发布为手机应用程序。这是一项涉及Web技术和移动应用开发的综合任务,涵盖了HTML、CSS、JavaScript(特别是针对游戏开发的库如 Phaser)以及移动端...
在本教程中,我们将深入探讨如何使用HTML5技术开发2D赛车游戏,并将其打包发布为手机应用程序。HTML5因其跨平台兼容性和丰富的图形处理能力,成为制作网页游戏的理想选择。在第三话中,我们将专注于如何实现游戏的...
不过,根据上下文,这可能是有关遥控赛车的项目文件、源代码、教程文档,或者是一个模拟遥控赛车的软件应用程序。 在IT领域,遥控赛车可能涵盖以下知识点: 1. **嵌入式系统**:遥控赛车的核心是其内置的微控制器...
本次毕业设计主要任务是对方程式赛车的悬架系统进行设计分析,包括但不限于:了解FSAE的底盘规则、研究悬架系统的基本原理和设计要求、选择合适的轮辋和轮胎、确定赛车的轴距和轮距、选择悬架结构形式、绘制二维图形...
JavaScript游戏需要关注性能,可能使用了一些优化技巧,如减少DOM操作,缓存常量,避免全局变量,或者使用Web Workers处理复杂计算以防止阻塞主线程。 总的来说,"JS-CAR"项目不仅是一个娱乐应用,也是一个学习...
在这个“opencv小游戏_赛车游戏”项目中,我们有机会深入理解OpenCV如何用于创建交互式游戏。下面将详细探讨这个游戏的实现原理和关键知识点。 1. **基础概念** - **OpenCV**:OpenCV是一个跨平台的计算机视觉库,...
1. **教程文档**:详细介绍了如何使用LOGO语言控制海龟赛车,包括基本的移动、转向命令,以及更复杂的逻辑控制结构如循环和条件语句。 2. **示例代码**:提供了预设的海龟赛车代码,让学生能够立即看到结果,同时也...
1. "scratch":Scratch是由麻省理工学院(MIT)的“终身幼儿园团队”开发的一款面向儿童的图形化编程工具,它通过积木式的编程语块,让编程变得简单易懂。 2. "源代码":源代码是程序的原始形式,可以被程序员阅读、...
10. **响应式设计**:HTML5支持响应式设计,使得游戏能在不同屏幕尺寸和设备上运行良好,无论是桌面电脑还是移动设备。 11. **AJAX异步通信**:虽然游戏主要是离线运行,但在某些情况下,如排行榜、在线多人对战,...
Scratch是由麻省理工学院(MIT)媒体实验室“终身幼儿园团队”开发的,通过拖拽积木式的编程语块,让编程变得简单易懂,适合初学者尤其是儿童入门。 在这个项目中,孩子们将有机会了解和掌握以下编程知识点: 1. *...
- `app.js`: 这可能是游戏的主要应用程序逻辑代码,包含了游戏的控制、碰撞检测、得分计算等功能。 - `howler.js`: 是一个强大的HTML5音频管理库,用于播放、管理和控制游戏中的音效和背景音乐。 - `viewporter....
源代码是程序的灵魂,是开发者与计算机之间的桥梁。在“疯狂赛车V1.0(1).sb3”这个压缩文件中,包含了整个游戏的所有编程逻辑。sb3文件是Scratch 3.0版本的项目文件格式,包含了图形化编程块的序列、变量、角色、...