当前位置: 首页 > news >正文

做网站的模版门窗网站设计

做网站的模版,门窗网站设计,东莞横沥网站制作,做网站需求目录 题目#xff1a;完成在Android平台下2个玩家分别利用2个手机连接在同一局域网下通过滑动摇杆分别使红飞机和黄飞机移动的开发。#xff08;全代码解析#xff09; 题目#xff1a;完成在Android平台下2个玩家分别利用2个手机连接在同一局域网下通过滑动摇杆分别使红飞…目录 题目完成在Android平台下2个玩家分别利用2个手机连接在同一局域网下通过滑动摇杆分别使红飞机和黄飞机移动的开发。全代码解析 题目完成在Android平台下2个玩家分别利用2个手机连接在同一局域网下通过滑动摇杆分别使红飞机和黄飞机移动的开发。全代码解析 用一个真机运行连接此电脑 的模拟机进行利用2个手机连接在同一局域网下通过滑动摇杆分别使红飞机和黄飞机移动的开发 运行结果  模拟机 真机 DrawThread.java代码 package com.example.client.thread;import com.example.clinet.view.GameView;import android.annotation.SuppressLint; import android.graphics.Canvas; import android.view.SurfaceHolder;public class DrawThread extends Thread {private int SLEEP_SPAN 50;//睡眠的毫秒数private SurfaceHolder surfaceHolder;private GameView view;private boolean flag true;public DrawThread(SurfaceHolder surfaceHolder, GameView view) {//构造器this.surfaceHolder surfaceHolder;this.view view;}public void setFlag(boolean flag) {//设置循环标记位this.flag flag;}SuppressLint(WrongCall)public void run(){Canvas c;while(flag){c null;try{// 锁定整个画布在内存要求比较高的情况下建议参数不要为nullc this.surfaceHolder.lockCanvas(null);synchronized (this.surfaceHolder){this.view.onDraw(c);}} finally{if (c ! null){//更新屏幕显示内容this.surfaceHolder.unlockCanvasAndPost(c);}}try{Thread.sleep(SLEEP_SPAN);//睡眠指定毫秒数}catch(Exception e){e.printStackTrace();}}} }KeyThread.java代码 package com.example.client.thread;import com.example.client.MainActivity; import com.example.util.GameData;public class KeyThread extends Thread {int SPAN_SLEEP10;MainActivity father;boolean flagtrue;public KeyThread(MainActivity father){this.fatherfather;}public void run(){while(flag){try{if(GameData.state2){father.nt.dout.writeUTF(#KEY#father.KeyDispX|father.KeyDispY);}Thread.sleep(SPAN_SLEEP);}catch(Exception e){e.printStackTrace();}}} }更改自己电脑上的IP地址winR输入cmd,然后输入ipconfig命令获取此电脑的IP地址NetworkThread.java代码如下 package com.example.client.thread;import android.util.Log;import java.io.DataInputStream; import java.io.DataOutputStream; import java.net.Socket; import com.example.client.MainActivity; import com.example.util.GameData;public class NetworkThread extends Thread{MainActivity activity;Socket sc;DataInputStream din;DataOutputStream dout;public boolean flagtrue;public NetworkThread(MainActivity activity){this.activityactivity;}public void run(){try{//与服务端建立连接 ,参数分别是要连接的服务端IP地址和要连接的服务端对应的监听端口Log.i(测试, run: 开始连接);scnew Socket(192.168.43.252,9999);dinnew DataInputStream(sc.getInputStream());doutnew DataOutputStream(sc.getOutputStream());dout.writeUTF(#CONNECT#);Log.i(测试, run: 完成连接);}catch(Exception e){Log.e(测试, run: 执行失败,e );e.printStackTrace();return;}while(flag){try{String msgdin.readUTF();if(msg.startsWith(#OK#)){System.out.println(Connect ok...);GameData.state1;}else if(msg.startsWith(#BEGIN#)){GameData.state2;this.activity.kt.start();}else if(msg.startsWith(#FULL#)){System.out.println(Full...);break;}else if(msg.startsWith(#GAME_DATA#)){String nrmsg.substring(13);String[] strAnr.split(\\|);int temprxInteger.parseInt(strA[0]);int tempryInteger.parseInt(strA[1]);int tempgxInteger.parseInt(strA[2]);int tempgyInteger.parseInt(strA[3]);synchronized(this.activity.gd.lock){this.activity.gd.rxtemprx;this.activity.gd.rytempry;this.activity.gd.gxtempgx;this.activity.gd.gytempgy;}}}catch(Exception e){e.printStackTrace();}}try{din.close();dout.close();sc.close();}catch(Exception e){e.printStackTrace();}} }MainActivity.Java代码 package com.example.client;import com.example.client.thread.KeyThread; import com.example.client.thread.NetworkThread; import com.example.clinet.view.GameView; import com.example.util.GameData; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory;public class MainActivity extends Activity {public int KeyDispX0;//方向xpublic int KeyDispY0;//方向ypublic Bitmap planer;public Bitmap planeg;public GameData gdnew GameData();public KeyThread ktnew KeyThread(this);public NetworkThread nt;GameView gv;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);planerBitmapFactory.decodeResource(getResources(), R.drawable.red);//红飞机planegBitmapFactory.decodeResource(getResources(), R.drawable.yellow);//黄飞机gv(GameView)this.findViewById(R.id.mf1);}Overridepublic boolean onCreateOptionsMenu(Menu menu){//调用Activity的getMenuInflater()得到一个MenuInflater//使用inflate方法来把布局文件中的定义的菜单 加载给 第二个参数所对应的menu对象getMenuInflater().inflate(R.menu.activity_main, menu);return true;}Overridepublic boolean onOptionsItemSelected(MenuItem item) {if(item.getItemId()R.id.menu_connect){if(this.ntnull){this.ntnew NetworkThread(MainActivity.this);this.nt.start();}}return true;} }ServerAgentThread.java代码如下package com.example.util;import java.io.*; import java.net.*; import java.util.*;public class ServerAgentThread extends Thread {//ͻ˼static int count0;//ͻбstatic ListServerAgentThread ulistnew ArrayListServerAgentThread();//ȫstatic int rx150;static int ry750;static int gx460;static int gy750;//static QueueAction aqnew LinkedListAction();//static Object locknew Object();Socket sc;DataInputStream din;DataOutputStream dout;int redOrYellow;boolean flagtrue;public static void broadcastState(){for(ServerAgentThread sa:ulist){try{sa.dout.writeUTF(#GAME_DATA#rx|ry|gx|gy);}catch(Exception e){e.printStackTrace();}}}public ServerAgentThread(Socket sc){this.scsc;try{dinnew DataInputStream(sc.getInputStream());doutnew DataOutputStream(sc.getOutputStream());}catch(Exception e){e.printStackTrace();}}public void run(){while(flag){try{String msgdin.readUTF();if(msg.startsWith(#CONNECT#)){if(count0){dout.writeUTF(#OK#);redOrYellow0;ulist.add(this);count;System.out.println(red connect...); // for(ServerAgentThread sa:ulist) // { // sa.dout.writeUTF(#BEGIN#); // }}else if(count1){dout.writeUTF(#OK#);redOrYellow1;ulist.add(this);count;System.out.println(yellow connect...);for(ServerAgentThread sa:ulist){sa.dout.writeUTF(#BEGIN#);}}else{dout.writeUTF(#FULL#);break;}}else if(msg.startsWith(#KEY#)){String iStrmsg.substring(7);String[] striStr.split(\\|);synchronized(lock){//¶aq.offer(new Action(this.redOrYellow,Integer.parseInt(str[0]),Integer.parseInt(str[1])));}}}catch(Exception e){e.printStackTrace();}}try{din.close();dout.close();sc.close();}catch(Exception e){e.printStackTrace();}} } Joystick.java代码 package com.example.util;import com.example.client.MainActivity; import com.example.client.R; import com.example.clinet.view.GameView;import static com.example.util.Constant.*; import android.graphics.BitmapFactory; import android.graphics.Canvas;public class Joystick {public MainActivity activity;public GameView view;public int length;public float x;public float y;public Joystick( GameView view,MainActivity activity,float x,float y){this.viewview;this.activityactivity;this.xx;this.yy;}public void drawJoystick(Canvas canvas){canvas.drawBitmap(BitmapFactory.decodeResource(this.activity.getResources(),R.drawable.yaogan1),JK_Start_x,JK_Start_y, null);canvas.drawBitmap(BitmapFactory.decodeResource(this.activity.getResources(),R.drawable.yaogan2),x,y,null);}public boolean change(float x,float y){lengthgetLength(this.view.pCenter.x,this.view.pCenter.y, x,y);if(lengthradio){//如果手指触点不在大环范围内return false;}else if(lengthradio){ //如果手指在摇杆活动范围内则摇杆处于手指触摸位置this.view.mJoystick.xx;this.view.mJoystick.yy;}else{//设置摇杆位置使其处于手指触摸方向的 摇杆活动范围边缘float anglegetRadian(this.view.pCenter.x,this.view.pCenter.y, x, y);this.view.mJoystick.x(int)(this.view.pCenter.xradio* Math.cos(angle));this.view.mJoystick.y(int)(this.view.pCenter.yradio*Math.sin(angle));}//方向this.activity.KeyDispX(int) (x-this.view.pCenter.x);//x偏移量this.activity.KeyDispY(int) (y-this.view.pCenter.y);//y偏移量return true;} }Action.java代码 package com.example.util;public class Action {int redOrYellow;//0-red 1-green float keyX;float keyY;int span20;//ƶpublic Action(int redOrYellow,float keyX,float keyY){this.redOrYellowredOrYellow;this.keyXkeyX;this.keyYkeyY;}public void doAction(){ float xx0;float yy0;if(Math.sqrt(keyX*keyXkeyY*keyY)!0){//תΪλֵxx (float) (keyX/Math.sqrt(keyX*keyXkeyY*keyY));yy(float) (keyY/Math.sqrt(keyX*keyXkeyY*keyY));}if(redOrYellow0){//if(ServerAgentThread.ryyy*span0ServerAgentThread.ryyy*span1100){//÷ɻƶΧServerAgentThread.ryyy*span;} if(ServerAgentThread.rxxx*span0ServerAgentThread.rxxx*span600){ServerAgentThread.rxxx*span;}}else{//if(ServerAgentThread.gyyy*span0ServerAgentThread.gyyy*span1100){//÷ɻƶΧServerAgentThread.gyyy*span;} if(ServerAgentThread.gxxx*span0ServerAgentThread.gxxx*span600){ServerAgentThread.gxxx*span;}}} } ActionThread.java代码 package com.example.util;public class ActionThread extends Thread {static final int SLEEP5;boolean flagtrue;public void run(){while(flag){Action anull;synchronized(ServerAgentThread.lock){//ȡƳԪaServerAgentThread.aq.poll();}if(a!null){a.doAction();ServerAgentThread.broadcastState(); }else{try{Thread.sleep(SLEEP);}catch(Exception e){e.printStackTrace();}}}} } Constant.java代码 package com.example.util;public class Constant {public static final int radio80;//半径public static final int JK_Start_x30;//摇杆大环起点xpublic static final int JK_Start_y830;//摇杆大环起点ypublic static final int xJoystick100;//摇杆小环xpublic static final int yJoystick900;//摇杆小环y//获取水平线夹角弧度public static float getRadian (float x1,float y1,float x2,float y2){float lenAx2-x1;float lenBy2-y1;float lenC(float) Math.sqrt(lenA*lenAlenB*lenB);float angle(float)Math.acos(lenA/lenC);angleangle*(y2y1?-1:1);return angle;}//获取长度public static int getLength(float centerX,float centerY,float x,float y){int result(int)Math.sqrt(Math.pow(x-centerX, 2)Math.pow(y-centerY, 2));return result;} }GameData.java代码; package com.example.util;public class GameData {public static int state0;//0--未连接 1---成功连接 2--游戏开始public Object locknew Object();public int rx150;public int ry750;public int gx460;public int gy750; }启动ServerThread.java代码 package com.example.util; import java.net.*;public class ServerThread extends Thread {boolean flagfalse;ServerSocket ss;public void run(){try{ssnew ServerSocket(9999);System.out.println(Server Listening on 9999...);flagtrue;new ActionThread().start();}catch(Exception e){e.printStackTrace();}while(flag){try{Socket scss.accept();System.out.println(sc.getInetAddress() connect...);new ServerAgentThread(sc).start();}catch(Exception e){e.printStackTrace();}}}public static void main(String args[]){new ServerThread().start();} } main.xml代码如下 ?xml version1.0 encodingutf-8? LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationvertical com.example.clinet.view.GameViewandroid:idid/mf1android:layout_widthfill_parentandroid:layout_heightwrap_content//LinearLayout 今天就分享到这里感谢预览~
http://www.dnsts.com.cn/news/65014.html

相关文章:

  • 苏州新区网站制作wordpress 阿里云点播
  • 江都城乡建设局网站苏州制作网页公司
  • 网站建设与管理试卷营销型网站建设页面
  • 宁波网络建站模板网页设计图片边框怎么设置
  • 想注册一个设计网站吗临沂沂河新区
  • 汝阳网站建设哪家好新加坡设计公司排行
  • 分类信息导航网站模板国外房屋设计网站
  • 网站软件免费下载大全网站统计
  • 常用的设计网站wordpress json插件安装
  • 国外网站打开很慢dns网站排名英文怎么说
  • 被黑的网站建设银行网站能买手机
  • 上海品牌网站建设公司外国做的福利小视频在线观看网站
  • 大连做网站公司哪家好wordpress按钮无法显示
  • 本地主机做网站服务器宁波外贸公司有哪些
  • 举报个人备案网站做经营性给网站做cdn
  • 资阳市网站seo做网站 如何注册公司
  • 做购物网站那个好河南网站备案代理
  • 怎么自己创建网站或者app宁波营销型网站建设
  • 给一个网站做需求分析网页制作模板
  • 网站建设推广方案策划书一个新的app如何推广
  • 辛集网站建设哪家好宣传型网站功能定位
  • 云南企业网站建设有限公司做html5视频网站
  • 江苏省通信建设交易中心网站蚌埠网站优化
  • 策划公司网站新民网站建设价格咨询
  • 做网站便宜500个企点qq大概多少钱
  • 科技网站 网站建设互联网营销师国家职业技能标准
  • 碧海蓝天网站手机网站搜索框代码
  • 揭阳网站建设公司哪个好只想怎样建设自己的销售网站
  • 赚钱的网站开发项目郑州网站制作生产厂商定制
  • 苏州专业做网站较好的公司有哪些大型网站开发管发