利用cocos-2d游戏引擎进行简单的游戏开发

levelLayer.java

package Layer;import android.graphics.Point;
import android.util.Log;
import android.view.MotionEvent;import org.cocos2d.actions.CCScheduler;
import org.cocos2d.actions.base.CCRepeatForever;
import org.cocos2d.actions.instant.CCCallFunc;
import org.cocos2d.actions.interval.CCAnimate;
import org.cocos2d.actions.interval.CCJumpTo;
import org.cocos2d.actions.interval.CCMoveTo;
import org.cocos2d.actions.interval.CCRepeat;
import org.cocos2d.actions.interval.CCSequence;
import org.cocos2d.layers.CCTMXObjectGroup;
import org.cocos2d.layers.CCTMXTiledMap;
import org.cocos2d.nodes.CCAnimation;
import org.cocos2d.nodes.CCSprite;
import org.cocos2d.nodes.CCSpriteFrame;
import org.cocos2d.sound.SoundEngine;
import org.cocos2d.types.CGPoint;
import org.cocos2d.types.CGRect;
import org.cocos2d.types.CGSize;
import org.cocos2d.types.util.CGPointUtil;import java.util.ArrayList;
import java.util.HashMap;
import java.util.Objects;/*** Created by duboxuan on 2017/7/10.*/public class levelLayer extends BaseLayer {CCTMXTiledMap map;ArrayList<CGPoint> point;CCSprite sprite;CCSprite sprite_Pit;ArrayList<CGPoint> pit;private int index;//速度private  int speed = 100;public levelLayer() {loadMap();
//        loadSprite();
//        move();
//        loadpit();
//        setIsTouchEnabled(true);//调度器CCScheduler scheduler = CCScheduler.sharedScheduler();scheduler.schedule("attack",this,2f,false);ArrayList<CCSpriteFrame> frame =  new ArrayList<>();for(int i=1;i<=8;i++){CCSpriteFrame ccSpriteFrame = CCSprite.sprite("npc/npc"+i+".png").displayedFrame();frame.add(ccSpriteFrame);}CCAnimation animation = CCAnimation.animation("XX",0.3F,frame);CCAnimate animate = CCAnimate.action(animation,true);CCRepeatForever forever = CCRepeatForever.action(animate);sprite.runAction(forever);}//攻击的方法public void attack(float f){s1.setAnchorPoint(sprite.getPosition());CCJumpTo j = CCJumpTo.action(1f.ccp(sprite.getPosition().x-50, sprite.getPosition().y-50),50,1);CCSequence sequence = CCSequence.actions(j,CCCallFunc.action(this,"Done"));s1.runAction(sequence);this.addChild(s1);}//杀人//炮弹的哦你攻击范围public void Done(){CGRect cgRect = CGRect.make(s.getPosition().x-50, s.getPosition().y-50,200,200 );if(CGRect.containsRect(cgRect,sprite.getBoundingBox())){Log.d("zz","Done:b被攻击了");sprite.removeSelf();}}//暂停的方法public boolean ccTouchesBegan(MotionEvent event) {CCSprite h = CCSprite.sprite("pit_h.png");CGPoint cgPoint = convertTouchToNodeSpace(event);boolean flag = true;if(CGRect.containsPoint(cc.getBoundingBox(),cgPoint)){if (flag) {//暂停当前layerthis.onExit();//声音暂停SoundEngine.sharedEngine().pauseSound();//添加一个新的Layerflag = false;} else {this.onEnter();SoundEngine.sharedEngine().pauseSound();flag = true;}}for (int i=0;i<pit.size();i++){CGSize size = sprite_Pit.getBoundingBox().size;CGRect rect = CGRect.make(pit.get(i).x,pit.get(i).y,size.getWidth(),size.getHeight());if(CGRect.containsPoint(rect,cgPoint)){Log.d("zz", "ccTouchesBegan: ");h.setAnchorPoint(0,0);h.setPosition(sprite_Pit.getPosition());sprite_Pit.removeSelf();this.addChild(h);}else{h.removeSelf();this.addChild(sprite_Pit);}float p_x = pit.get(i).x;float p_y = pit.get(i).y;float x = rect.size.getWidth()/4;float y = rect.size.getHeight()/4;int temp=50;CCSprite leader1 = CCSprite.sprite("leader/leader1.png");leader1.setAnchorPoint(0,0);leader1.setPosition(x+p_x-temp,y+p_y+temp);this.addChild(leader1);CCSprite leader2 = CCSprite.sprite("leader/leader2.png");leader2.setAnchorPoint(0,0);leader2.setPosition(x+p_x-temp,y+p_y+temp);this.addChild(leader2);CCSprite leader3 = CCSprite.sprite("leader/leader3.png");leader3.setAnchorPoint(0,0);leader3.setPosition(x+p_x-temp,y+p_y+temp);this.addChild(leader3);CCSprite leader4 = CCSprite.sprite("leader/leader4.png");leader4.setAnchorPoint(0,0);leader4.setPosition(x+p_x-temp,y+p_y+temp);this.addChild(leader4);CCSprite leaderbg = CCSprite.sprite("leader/leader_bg.png");leaderbg.setAnchorPoint(0,0);leaderbg.setPosition(x+p_x-temp,y+p_y+temp);setScale((float) 0.5);this.addChild(leaderbg);}return super.ccTouchesBegan(event);}CCSprite cc = CCSprite.sprite("");private void loadMenu(){cc.setAnchorPoint(0,0);cc.setPosition(winSize.getWidth()-cc.getContentSize().getWidth(),winSize.getHeight()-40);this.addChild(cc);}private void loadpit() {pit = getPointByMap(map, "pit");for(int i=0;i<pit.size();i++){sprite_Pit = CCSprite.sprite("pit.png");sprite_Pit.setAnchorPoint(0,0);sprite_Pit.setPosition(pit.get(i));this.addChild(sprite_Pit);}
}public void move() {index++;if(index<point.size()){CCMoveTo moveto = CCMoveTo.action(CGPointUtil.distance(point.get(index-1), point.get(index))/speed,point.get(index));CCMoveTo moveTo = CCMoveTo.action(2f,point.get(index));CCSequence sequence = CCSequence.actions(moveto, CCCallFunc.action(this,"move"));sprite.runAction(sequence);}else if(index==point.size()){removeSelf();}}private void loadSprite() {sprite = CCSprite.sprite("image 18300.png");sprite.setAnchorPoint(0,0);point = getPointByMap(map,"way");sprite.setPosition(point.get(0));this.addChild(sprite);}private void loadMap() {map = CCTMXTiledMap.tiledMap("level.tmx");this.addChild(map);Log.d("zz", "loadMap: ww");}public ArrayList<CGPoint> getPointByMap(CCTMXTiledMap map,String name){CCTMXObjectGroup cctmxObjectGroup = map.objectGroupNamed(name);ArrayList<HashMap<String,String>> objects = cctmxObjectGroup.objects;ArrayList<CGPoint> points = new ArrayList<>();for(HashMap<String,String> HashMap:objects){points.add(ccp(Integer.parseInt(HashMap.get("x")),Integer.parseInt(HashMap.get("y"))));}return points;}
}

MainActivity.java

package com.example.d.myapplication;import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutCompat;
import android.transition.Scene;
import android.util.Log;
import android.view.Gravity;
import android.view.ViewGroup;
import android.webkit.WebView;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.GridLayout;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;import org.cocos2d.layers.CCScene;
import org.cocos2d.nodes.CCDirector;
import org.cocos2d.opengl.CCGLSurfaceView;
import org.cocos2d.sound.SoundEngine;import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.HashMap;
import java.util.Objects;
import java.util.Set;
import java.util.StringTokenizer;import Layer.*;public class MainActivity extends Activity {protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//创建surfaceview
//        CCGLSurfaceView view=new CCGLSurfaceView(this);//设置显示视图
//        setContentView(view);//获取导演对象,导演只有一个,你获取的是共享
//        CCDirector director=CCDirector.sharedDirector();//启动渲染线程
//        director.attachInView(view);//设置屏幕大小
//        director.setScreenSize(800,480);//设置屏幕方向
//        director.setDeviceOrientation(CCDirector.kCCDeviceOrientationLandscapeLeft);//设置显示FPS// director.setDisplayFPS(true);//设置每秒多少帧// director.setAnimationInterval(1/30);
//        CCScene scene=CCScene.node();
//        scene.addChild(new WeloceLayer());
//        scene.addChild(new levelLayer());
//        director.runWithScene(scene);//游戏暂停
//        CCGLSurfaceView view = new CCGLSurfaceView(this);
//        setContentView(view);
//        CCDirector ccDirector = CCDirector.sharedDirector();
//        ccDirector.attachInView(view);
//        ccDirector.setScreenSize(800,400);
//        ccDirector.setDeviceOrientation(CCDirector.kCCDeviceOrientationLandscapeLeft);
//        ccDirector.setDisplayFPS(true);
//        CCScene sence = CCScene.node();
//        sence.addChild(sence);
//        sence.addChild(new levelLayer());
//        ccDirector.runWithScene(sence);
//   protected void onPause(){//游戏继续//Activity 销毁,游戏结束
}
}

BaseLayer.java

package Layer;import android.util.Log;import com.example.d.myapplication.R;import org.cocos2d.actions.base.CCAction;
import org.cocos2d.actions.interval.CCJumpTo;
import org.cocos2d.layers.CCLayer;
import org.cocos2d.layers.CCScene;
import org.cocos2d.menus.CCMenu;
import org.cocos2d.menus.CCMenuItem;
import org.cocos2d.menus.CCMenuItemSprite;
import org.cocos2d.nodes.CCDirector;
import org.cocos2d.nodes.CCSprite;
import org.cocos2d.sound.SoundEngine;
import org.cocos2d.types.CGSize;/*** Created by duboxuan on 2017/7/10.*/
public class BaseLayer extends CCLayer {public CGSize winSize = CCDirector.sharedDirector().getWinSize();public BaseLayer() {//加载声音SoundEngine sound = SoundEngine.sharedEngine();sound.playSound(CCDirector.sharedDirector().theApp, R.raw.liren,true);CCSprite bg = CCSprite.sprite("welcome.jpg");bg.setAnchorPoint(0,0);bg.setScaleX(winSize.getWidth()/bg.getContentSize().getWidth());bg.setScaleY(winSize.getHeight()/bg.getContentSize().getHeight());this.addChild(bg);CCSprite logo = CCSprite.sprite("image 3293.png");logo.setAnchorPoint(0,0);logo.setPosition(0,50);logo.setScale(0.5);this.addChild(logo);CCAction jumpTo = CCJumpTo.action(1f,ccp(50,winSize.getHeight()-220),10,1);logo.runAction(jumpTo);CCSprite normalSprite = CCSprite.sprite("image 3262.png");CCSprite selectedSprite = CCSprite.sprite("image 3266.png");CCMenuItemSprite menuItemSprite = CCMenuItemSprite.item(normalSprite,selectedSprite,this,"click");CCMenu menu  =  CCMenu.menu(menuItemSprite);menu.setAnchorPoint(0,0);menu.setPosition(400,200);this.addChild(menu);}public void  click(Object obj){int zz = Log.d("zz", "click: 点击我");CCScene scene = CCScene.node();scene.addChild(new levelLayer());CCDirector.sharedDirector().replaceScene(scene);}
}

cocos-2d 游戏开发相关推荐

  1. Cocos Creator游戏开发教程 学习笔记

    学完提问几个问题吧: position的锚点位置数值原点在哪里? 因为position是相对坐标,所以原点是父节点的锚点 .所以Canvas下面的直属节点原点就是世界坐标系的原点Canvas的锚点. ...

  2. unity超级马里奥2d游戏开发课程-01课程介绍

    大家好,我是小兵,今天给大家带来Unity开发超级马里奥2d游戏的第1课,课程介绍,你可以在我的个人博客geekape.net上找到完整的课程. 我之前主要是做前端开发工作的,并不是做游戏开发的,但由 ...

  3. Unity 2D游戏开发教程之摄像头追踪功能

    Unity 2D游戏开发教程之摄像头追踪功能 上一章,我们创建了一个简单的2D游戏.此游戏中的精灵有3个状态:idle.left和right.这看起来确实很酷!但是仅有的3个状态却限制了精灵的能力,以 ...

  4. Unity 2D游戏开发教程之游戏中精灵的跳跃状态

    Unity 2D游戏开发教程之游戏中精灵的跳跃状态 精灵的跳跃状态 为了让游戏中的精灵有更大的活动范围,上一节为游戏场景添加了多个地面,于是精灵可以从高的地面移动到低的地面处,如图2-14所示.但是却 ...

  5. Unity 2D游戏开发教程之为游戏场景添加多个地面

    Unity 2D游戏开发教程之为游戏场景添加多个地面 为游戏场景添加多个地面 显然,只有一个地面的游戏场景太小了,根本不够精灵四处活动的.那么,本节就来介绍一种简单的方法,可以为游戏场景添加多个地面. ...

  6. Unity 2D游戏开发教程之精灵的死亡和重生

    Unity 2D游戏开发教程之精灵的死亡和重生 精灵的死亡和重生 目前为止,游戏项目里的精灵只有Idle和Walking这两种状态.也就是说,无论精灵在游戏里做什么,它都不会进入其它的状态,如死亡.于 ...

  7. ​Unity 2D游戏开发教程之2D游戏的运行效果

    ​Unity 2D游戏开发教程之2D游戏的运行效果 2D游戏的运行效果 本章前前后后使用了很多节的篇幅,到底实现了怎样的一个游戏运行效果呢?或者说,游戏中的精灵会不会如我们所想的那样运行呢?关于这些疑 ...

  8. Unity 2D游戏开发教程之使用脚本实现游戏逻辑

    Unity 2D游戏开发教程之使用脚本实现游戏逻辑 使用脚本实现游戏逻辑 通过上一节的操作,我们不仅创建了精灵的动画,还设置了动画的过渡条件,最终使得精灵得以按照我们的意愿,进入我们所指定的动画状态. ...

  9. Unity4.x 2D游戏开发基础教程第1章Unity及其组成的介绍

    Unity4.x 2D游戏开发基础教程第1章Unity及其组成的介绍 本书主要讲解的是,如何使用Unity开发2D游戏.但在开始讲解之前,最好先熟悉一下Unity这个工具.本章会首先介绍Unity的下 ...

  10. Unity 2D游戏开发快速入门第1章创建一个简单的2D游戏

    Unity 2D游戏开发快速入门第1章创建一个简单的2D游戏 即使是现在,很多初学游戏开发的同学,在谈到Unity的时候,依然会认为Unity只能用于制作3D游戏的.实际上,Unity在2013年发布 ...

最新文章

  1. Python Web学习笔记之Python多线程基础
  2. 【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 使用 Category 分类进行方法注入的优缺点 )
  3. php 获取请求设备,php – 如何获取设备令牌
  4. linux分辨率和用户有关吗,Linux系统在高分屏非正常分辨率显示
  5. 【采访】腾讯社交广告高校算法大赛 决赛第一周周冠军——ThreeIdiots比赛经验及心得分享 腾讯广告算法大赛
  6. 读书笔记∣世界是数字的
  7. IDEA 快速创建 SpringBoot 项目
  8. bzoj 1488: [HNOI2009]图的同构
  9. 数学建模matlab题型,数学建模题型之分类
  10. vue颜色选择器插件
  11. ISIS协议基础知识
  12. 干货 | 携程风控数据仓库实践
  13. 想知道如何翻译视频?翻译视频声音生成字幕方法分享
  14. 学生成绩表c语言,学生成绩信息表(c语言程序)
  15. md文件如何编辑和转换(不依赖插件Markdown Viewer)
  16. chromedriver与chrome浏览器各版本对应下载
  17. excel单元格设置自动换行后导出显示不全原因
  18. 了解品牌名称 TM (™) 和 R(®) 符号之间的区别至关重要
  19. 2022年注册会计师考试《财务成本管理》考前练习题及答案
  20. 如何成为不可替代的程序员?掌握这个方法,裁员名单永远没有你

热门文章

  1. 微众银行java开发待遇如何,内含福利
  2. 新地理信息时代的信息化测绘
  3. Python快速上手系列--字典--详解实战篇
  4. 产品经理基础入门课程
  5. 瓶子换水问题java_空瓶子换水问题
  6. 鲜花电商狼烟四起,花点时间的“悦己”生意还能香多久?
  7. RK3128适配RTL8723DU
  8. CodeBlocks编译环境配置及调试问题
  9. 论文插图用计算机绘制,论文中插图和表格的绘制种类
  10. 导向滤波算法——OpenGL实现