首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

微巡游戏引擎做的920爱学算术源码

2012-08-10 
微云游戏引擎做的920爱学算术源码用于初学微云游戏引擎,供大家理解和构思一个完整的游戏。来源:http://www.

微云游戏引擎做的920爱学算术源码

微巡游戏引擎做的920爱学算术源码微巡游戏引擎做的920爱学算术源码微巡游戏引擎做的920爱学算术源码微巡游戏引擎做的920爱学算术源码

用于初学微云游戏引擎,供大家理解和构思一个完整的游戏。来源:http://www.i920i.com/article_show.aspx?id=15

可到右面网址下载完整APK。http://www.i920i.com/download.aspx

 

SuanshuActivity.java package li.suanshu;   import com.umeng.analytics.MobclickAgent; import com.wiyun.engine.nodes.Director; import com.wiyun.engine.nodes.Scene; import com.wiyun.engine.nodes.Director.IDirectorLifecycleListener; import com.wiyun.engine.opengl.WYGLSurfaceView;   import android.app.Activity; import android.os.Bundle; import android.view.Window; import android.view.WindowManager;   public class SuanshuActivity extends Activity implements IDirectorLifecycleListener{          static {                    System.loadLibrary("wiskia");                    System.loadLibrary("xml2");                    System.loadLibrary("wiengine");                    System.loadLibrary("wisound");          }          protected WYGLSurfaceView mGLView;          private boolean mStarted;     /** Called when the activity is first created. */     @Override     public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         requestWindowFeature(Window.FEATURE_NO_TITLE);         getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);                 mGLView = new WYGLSurfaceView(this);         setContentView(mGLView);      // add lifecycle listener         Director.getInstance().addLifecycleListener(this);          Director.getInstance().setDisplayFPS(false);         Director.getInstance().setScaleMode(Director.SCALE_MODE_BASE_SIZE_FIT_XY);         Director.getInstance().setBaseSize(480,800);     }     @Override     public void onPause() {         super.onPause();         Director.getInstance().pause();         MobclickAgent.onPause(this);     }       @Override     public void onResume() {         super.onResume();         Director.getInstance().resume();         MobclickAgent.onResume(this);       }       @Override     public void onDestroy() {              Director.getInstance().end();                      super.onDestroy();     }              @Override          public void onDirectorEnded() {          }            @Override          public void onDirectorPaused() {          }            @Override          public void onDirectorResumed() {          }            @Override          public void onDirectorScreenCaptured(String path) {          }            @Override          public void onSurfaceChanged(int w, int h) {              if(!mStarted) {                        mStarted = true;                        Scene s=Scene.make();                        s.addChild(new Splash());                        Director.getInstance().runWithScene(s);              }          }            @Override          public void onSurfaceCreated() {          }            @Override          public void onSurfaceDestroyed() {          } }   MainMenu .java package li.suanshu;   import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.content.DialogInterface.OnClickListener;   import com.wiyun.engine.nodes.ColorLayer; import com.wiyun.engine.nodes.Director; import com.wiyun.engine.nodes.Label; import com.wiyun.engine.nodes.Menu; import com.wiyun.engine.nodes.MenuItemSprite; import com.wiyun.engine.nodes.Scene; import com.wiyun.engine.nodes.Sprite; import com.wiyun.engine.transitions.RightPushInTransition; import com.wiyun.engine.types.WYColor3B; import com.wiyun.engine.types.WYColor4B; import com.wiyun.engine.utils.PrefUtil; import com.wiyun.engine.utils.TargetSelector;   public class MainMenu extends Scene{     public MainMenu() {                    // TODO Auto-generated constructor stub              ColorLayer clayer=ColorLayer.make(new WYColor4B(255, 255, 255, 255));                    addChild(clayer,-10);                                       //WYSize s=Director.getInstance().getWindowSize();                                       Label lTitle=Label.make("920爱学算术", 80);                    lTitle.setColor(new WYColor3B(122,167,2));                    lTitle.setAnchorPercent(0, 0);                    lTitle.setPosition(15,650);                    addChild(lTitle);                                       Sprite spJiaNormal = Sprite.make(R.drawable.jia);         Sprite spJiaSelected = Sprite.make(R.drawable.jia1);                      MenuItemSprite itemJia = MenuItemSprite.make(spJiaNormal, spJiaSelected, null,                      new TargetSelector(this, "onJia(Object)", new Object[] { "加法运算" }));                      Sprite spJianNormal = Sprite.make(R.drawable.jian);         Sprite spJianSelected = Sprite.make(R.drawable.jian1);                      MenuItemSprite itemJian = MenuItemSprite.make(spJianNormal, spJianSelected, null,                      new TargetSelector(this, "onJian(Object)", new Object[] { "减法运算" }));                      Sprite spChengNormal = Sprite.make(R.drawable.cheng);         Sprite spChengSelected = Sprite.make(R.drawable.cheng1);                      MenuItemSprite itemCheng = MenuItemSprite.make(spChengNormal, spChengSelected, null,                      new TargetSelector(this, "onCheng(Object)", new Object[] { "乘法运算" }));                      Sprite spChuNormal = Sprite.make(R.drawable.chu);         Sprite spChuSelected = Sprite.make(R.drawable.chu1);                      MenuItemSprite itemChu = MenuItemSprite.make(spChuNormal, spChuSelected, null,                      new TargetSelector(this, "onChu(Object)", new Object[] { "除法运算" }));                      Sprite spScoreNormal = Sprite.make(R.drawable.score);         Sprite spScoreSelected = Sprite.make(R.drawable.score1);                      MenuItemSprite itemScore = MenuItemSprite.make(spScoreNormal, spScoreSelected, null,                      new TargetSelector(this, "onScore(Object)", new Object[] { "查看成绩" }));                                                          Sprite spAboutNormal = Sprite.make(R.drawable.about);         Sprite spAboutSelected = Sprite.make(R.drawable.about1);                      MenuItemSprite itemAbout = MenuItemSprite.make(spAboutNormal, spAboutSelected, null,                      new TargetSelector(this, "onAbout(Object)", new Object[] { "关于程序和作者!" }));                      Menu menu=Menu.make(itemJia,itemJian,itemCheng,itemChu,itemScore,itemAbout);                    menu.alignItemsVertically();                                  addChild(menu);               setKeyEnabled(true);               autoRelease(true);          }     public void onJia(final Object arg)     {              Scene scene = Scene.make();         scene.addChild(new MainScene(), 0);         Director.getInstance().pushScene(RightPushInTransition.make(1, scene));     }     public void onJian(final Object arg)     {              Scene scene = Scene.make();         scene.addChild(new Jian(), 0);         Director.getInstance().pushScene(RightPushInTransition.make(1, scene));          }     public void onCheng(final Object arg)     {              Scene scene = Scene.make();         scene.addChild(new Cheng(), 0);         Director.getInstance().pushScene(RightPushInTransition.make(1, scene));     }     public void onChu(final Object arg)     {              Scene scene = Scene.make();         scene.addChild(new Chu(), 0);         Director.getInstance().pushScene(RightPushInTransition.make(1, scene));     }     public void onScore(final Object arg)     {              final int nMaxFen=PrefUtil.getIntPref("LiFen",0);                    final String strUser=PrefUtil.getStringPref("LiUser","");                                       ((Activity)Director.getInstance().getContext()).runOnUiThread(new Runnable() {                             public void run() {                                      String strText="最高得分:"+nMaxFen+"\r\n"+"姓名:"+strUser;                                                                           new AlertDialog.Builder(((Activity)Director.getInstance().getContext())).setTitle(String.valueOf("得分情况:")+"").setIcon(                                                         android.R.drawable.ic_dialog_info).setMessage(strText).setPositiveButton("确定", new OnClickListener() {                                                                  @Override                                                                  public void onClick(DialogInterface dialog,                                                                                     int which) {                                                                            // TODO Auto-generated method stub                                                                                                                                             }                                                         })                                                         .setNegativeButton("取消", new OnClickListener() {                                                                                                                                   @Override                                                                  public void onClick(DialogInterface dialog, int which) {                                                                            // TODO Auto-generated method stub                                                                                                                                             }                                                         }).show();                             }                    });     }     public void onAbout(final Object arg)     {              ((Activity)Director.getInstance().getContext()).runOnUiThread(new Runnable() {                             public void run() {                                      //String strUrl="file:///android_asset/about.html";                                      String strUrl="";                                      strUrl="<html><head><title>920 About</title></head><body>"+                                      "<H1>920爱学算术</H1><H4>作者:吴龙<H4><H4>Q  Q:690310112</H4><H4>程序简介:适用于10岁以下儿童使用,测试儿童数学算术、脑力和反应快慢的小游戏。纯绿色程序,无任何广告。如果你感觉对您有帮助,可通过下面支付宝和银行帐号打款。算是对作者的捐赠。以后开发出更优秀的教育类应用和游戏。谢谢。</H4><H4>支付宝:18701002871   用户名:李志国</H4><H4>工商银行:622202 020006344 8548  开户地:工行昌平支行  用户名:李志国</H4><H4>官网:<a href=http://www.i920i.com>http://www.i920i.com</a></H4>"                                      +                                      "</body></html>";                                      Intent intent=new Intent();                                      intent.setClass(((Activity)Director.getInstance().getContext()), MyWebView.class);                                      intent.putExtra("Http",strUrl);                                      ((Activity)Director.getInstance().getContext()).startActivity(intent);                             }                    });     } }   MainScene.java   package li.suanshu;   import java.util.Random;   import android.app.Activity; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.util.Log; import android.widget.EditText;   import com.wiyun.engine.nodes.Button; import com.wiyun.engine.nodes.ColorLayer; import com.wiyun.engine.nodes.Director; import com.wiyun.engine.nodes.Label; import com.wiyun.engine.nodes.NinePatchSprite; import com.wiyun.engine.nodes.Scene; import com.wiyun.engine.nodes.Scheduler; import com.wiyun.engine.nodes.Slider; import com.wiyun.engine.nodes.Sprite; import com.wiyun.engine.nodes.Timer; import com.wiyun.engine.opengl.Texture2D; import com.wiyun.engine.types.WYColor3B; import com.wiyun.engine.types.WYColor4B; import com.wiyun.engine.types.WYRect; import com.wiyun.engine.utils.PrefUtil; import com.wiyun.engine.utils.ResolutionIndependent; import com.wiyun.engine.utils.TargetSelector;   public class MainScene extends Scene{          Label lShang=null;          Label lXia=null;          Label lDeng=null;          Label lDui=null;          Label lTitleRight=null;                   Slider slider1=null;                   int nQian=0;          int nHou=0;          int nDeng=0;          String strDeng="";          Random r;            TargetSelector mSelector1;     int nJianGe=0;     int nScore=0;          public MainScene() {          // TODO Auto-generated constructor stub                    ColorLayer clayer=ColorLayer.make(new WYColor4B(255, 255, 255, 255));                    addChild(clayer,-10);                    r=new Random();                                       //WYSize s=Director.getInstance().getWindowSize();                    // slider 1                    Sprite bar = Sprite.make(R.drawable.bar);                    Sprite thumb1 = Sprite.make(R.drawable.thumb);                    slider1 = Slider.make(null, bar, thumb1);                    slider1.setEnabled(false);                    slider1.setValue(0);                    slider1.setShowFullBar(true);                    slider1.setAnchorPercent(0, 0);                    slider1.setPosition(-12, 720);                    addChild(slider1);                                       Label lTitleLeft=Label.make("ARITHMETIC CARDS", 20);                    lTitleLeft.setColor(new WYColor3B(0,0,0));                    lTitleLeft.setAnchorPercent(0, 0);                    lTitleLeft.setPosition(10, 750);                    addChild(lTitleLeft);                            lTitleRight=Label.make("SCORE:", 20);                    lTitleRight.setColor(new WYColor3B(0, 0, 0));                    lTitleRight.setAnchorPercent(0, 0);                    lTitleRight.setPosition(300, 750);                    addChild(lTitleRight);                                       lShang=Label.make("14", 100);                    lShang.setColor(new WYColor3B(0, 0, 0));                    lShang.setAnchorPercent(1, 1);                    lShang.setPosition(300, 700);                    addChild(lShang);                                       lXia=Label.make("14", 100);                    lXia.setColor(new WYColor3B(0, 0, 0));                    lXia.setAnchorPercent(1, 1);                    lXia.setPosition(300, 600);                    addChild(lXia);                                       Label lFuHao=Label.make("+", 110);                    lFuHao.setColor(new WYColor3B(0, 0, 0));                    lFuHao.setAnchorPercent(1, 1);                    lFuHao.setPosition(180, 600);                    addChild(lFuHao);                                       Label lXian=Label.make("_________", 60);                    lXian.setColor(new WYColor3B(0, 0, 0));                    lXian.setAnchorPercent(1, 1);                    lXian.setPosition(330, 550);                    addChild(lXian);                                       lDeng=Label.make("28", 100);                    lDeng.setColor(new WYColor3B(0, 0, 0));                    lDeng.setAnchorPercent(1, 1);                    lDeng.setPosition(300, 480);                    addChild(lDeng);                                       lDui=Label.make("", 120);                    lDui.setColor(new WYColor3B(255, 0, 0));                    lDui.setPosition(400, 550);                    addChild(lDui);                                       CreateButton("?",400,420,new TargetSelector(this, "JiSuan(int)", new Object[] { -2 }));                                       CreateButton("7",150,300,new TargetSelector(this, "JiSuan(int)", new Object[] { 7 }));                    CreateButton("8",250,300,new TargetSelector(this, "JiSuan(int)", new Object[] { 8 }));                    CreateButton("9",350,300,new TargetSelector(this, "JiSuan(int)", new Object[] { 9 }));                                       CreateButton("4",150,220,new TargetSelector(this, "JiSuan(int)", new Object[] { 4 }));                    CreateButton("5",250,220,new TargetSelector(this, "JiSuan(int)", new Object[] { 5 }));                    CreateButton("6",350,220,new TargetSelector(this, "JiSuan(int)", new Object[] { 6 }));                                       CreateButton("1",150,140,new TargetSelector(this, "JiSuan(int)", new Object[] { 1 }));                    CreateButton("2",250,140,new TargetSelector(this, "JiSuan(int)", new Object[] { 2 }));                    CreateButton("3",350,140,new TargetSelector(this, "JiSuan(int)", new Object[] { 3 }));                                       CreateButton1("0",200,60,new TargetSelector(this, "JiSuan(int)", new Object[] { 0 }));                    CreateButton("←",350,60,new TargetSelector(this, "JiSuan(int)", new Object[] { -1 }));                                       mSelector1 = new TargetSelector(this, "updateLabel(float,int)", new Object[] { 0f, 1 });              Timer t = new Timer(mSelector1, 1f);              Scheduler.getInstance().schedule(t);              initSuan();    }       public void updateLabel(float delta, int v) {              nJianGe=v;              //Log.e("Touch","jian:"+nJianGe);              mSelector1.setArgument(1, v + 1);     }          private void CreateButton(String label, float x, float y, TargetSelector ts)          {                    NinePatchSprite normal1 = NinePatchSprite.make(Texture2D.makePNG(R.drawable.btn_normal), WYRect.make(DP(9), DP(7), DP(22), DP(28)));                    NinePatchSprite pressed1 = NinePatchSprite.make(Texture2D.makePNG(R.drawable.btn_pressed), WYRect.make(DP(9), DP(7), DP(22), DP(28)));                    normal1.setContentSize(DP(80), DP(60));                    pressed1.setContentSize(DP(80), DP(60));                    Button bt1 = Button.make(normal1,                                      pressed1, null, null, ts);                    bt1.setPosition(x,y);                    bt1.setClickScale(1.4f);         addChild(bt1);           Label label1=Label.make(label, 60);         label1.setColor(new WYColor3B(255, 255, 255));              label1.setPosition(x,y);              addChild(label1,2);          }          private void CreateButton1(String label, float x, float y, TargetSelector ts)          {                    NinePatchSprite normal1 = NinePatchSprite.make(Texture2D.makePNG(R.drawable.btn_normal), WYRect.make(DP(9), DP(7), DP(22), DP(28)));                    NinePatchSprite pressed1 = NinePatchSprite.make(Texture2D.makePNG(R.drawable.btn_pressed), WYRect.make(DP(9), DP(7), DP(22), DP(28)));                    normal1.setContentSize(DP(180), DP(60));                    pressed1.setContentSize(DP(180), DP(60));                    Button bt1 = Button.make(normal1,                                      pressed1, null, null, ts);                    bt1.setPosition(x,y);                    bt1.setClickScale(1.4f);         addChild(bt1);           Label label1=Label.make(label, 60);         label1.setColor(new WYColor3B(255, 255, 255));              label1.setPosition(x,y);              addChild(label1,2);          }          private void initSuan()          {                    if (slider1.getValue()==100)                    {                             final int nMaxFen=PrefUtil.getIntPref("LiFen",0);                             final String strUser=PrefUtil.getStringPref("LiUser","");                                                         ((Activity)Director.getInstance().getContext()).runOnUiThread(new Runnable() {                                      public void run() {                                                final EditText et=new EditText(((Activity)Director.getInstance().getContext()));                                                String strText="最高得分:"+nMaxFen+"\r\n"+"姓名:"+strUser+"\r\n当前得分:"+nScore;                                                                                               new AlertDialog.Builder(((Activity)Director.getInstance().getContext())).setTitle(String.valueOf("得分情况:")+"").setIcon(                                                                  android.R.drawable.ic_dialog_info).setMessage(strText).setView(et                                                                  ).setPositiveButton("确定", new OnClickListener() {                                                                            @Override                                                                            public void onClick(DialogInterface dialog,                                                                                              int which) {                                                                                     // TODO Auto-generated method stub                                                                                     if (et.getText().length()>0 &&nScore>nMaxFen)                                                                                     {                                                                                              String strUrl="";                                                                                              strUrl=et.getText().toString();                                                                                              PrefUtil.setIntPref("LiFen",nScore);                                                                                              PrefUtil.setStringPref("LiUser",strUrl);                                                                                              Director.getInstance().popScene();                                                                                     }                                                                            }                                                                  })                                                                  .setNegativeButton("取消", new OnClickListener() {                                                                                                                                                       @Override                                                                            public void onClick(DialogInterface dialog, int which) {                                                                                     // TODO Auto-generated method stub                                                                                     Director.getInstance().popScene();                                                                            }                                                                  }).show();                                      }                             });                    }                    slider1.setValue(slider1.getValue()+5);                    nQian=r.nextInt(50);                    nHou=r.nextInt(50);                    nDeng=nQian+nHou;                    lShang.setText(String.valueOf(nQian));                    lXia.setText(String.valueOf(nHou));                    lDeng.setText("");                    strDeng="";                    lDui.setText("");                    mSelector1.setArgument(1, 1);          }          float DP(float v) {                    return ResolutionIndependent.resolveDp(v);          }                   float SP(float v) {                    return ResolutionIndependent.resolveSp(v);          }          public void JiSuan(int delta) {                    Log.e("Touch","Num:"+delta);                    if (delta==-1)                    {                             if (strDeng.length()>0 && strDeng.length()<8)                             {                                      strDeng=strDeng.substring(0, strDeng.length()-1);                             }                    }                    if (strDeng.length()>4)                    {                             return;                    }                    switch(delta)                    {                    case -2:                             ((Activity)Director.getInstance().getContext()).runOnUiThread(new Runnable() {                                      public void run() {                                                AlertDialog.Builder builder = new Builder(((Activity)Director.getInstance().getContext()));                                                builder.setMessage("答案:"+"\r\n"+nQian+"+"+nHou+"="+nDeng)                                                                                               .setPositiveButton("确定", new OnClickListener() {                                                         public void onClick(DialogInterface dialog, int which) {                                                                                                                          }                                                }).show();                                      }                             });                             break;                    case 0:                             strDeng+="0";                             break;                    case 1:                             strDeng+="1";                             break;                    case 2:                             strDeng+="2";                             break;                    case 3:                             strDeng+="3";                             break;                    case 4:                             strDeng+="4";                             break;                    case 5:                             strDeng+="5";                             break;                    case 6:                             strDeng+="6";                             break;                    case 7:                             strDeng+="7";                             break;                    case 8:                             strDeng+="8";                             break;                    case 9:                             strDeng+="9";                             break;                    }                    lDeng.setText(strDeng);                    Log.e("Touch","D:"+String.valueOf(nDeng));                    if (strDeng.contains(String.valueOf(nDeng)))                    {                             Log.e("Touch", "Deng:"+strDeng);                             lDui.setText("√");                             Log.e("Touch","JianGe:"+nJianGe);                             nScore=nScore+(int)((1000-nJianGe)/10);                             lTitleRight.setText("SCORE:"+nScore);                             Thread t=new Thread(new Runnable() {                                                                           @Override                                      public void run() {                                                // TODO Auto-generated method stub                                                try {                                                         Thread.sleep(1000);                                                         initSuan();                                                } catch (InterruptedException e) {                                                         // TODO Auto-generated catch block                                                         e.printStackTrace();                                                }                                      }                             });                             t.start();                    }          }   }


 

热点排行