Từ 1 tới 2 trên tổng số 2 kết quả

Đề tài: di chuyển view với tọa độ vừa nhận vào chính giữa màn hình - Cờ cảo

  1. #1
    Ngày gia nhập
    06 2012
    Bài viết
    2

    Mặc định di chuyển view với tọa độ vừa nhận vào chính giữa màn hình - Cờ cảo

    Chào các bác,
    Tình hình là em đang làm một niên luận Caro Online, và em chọn View để vẽ bằng canvas...(do mới tiếp xúc với android và khả năng ngoại ngữ kém, nên có thể không hiểu đúng). và em cần hiển thị địa chỉ người chơi 1 vừa đánh sang người chơi 2 (ở giữa màn hình). Nhưng em kô biết làm cách nào. Mong các bác chỉ giúp. Mã nguồn của e ạ!
    gameview.xml
    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent" 
        >
        <ScrollView android:id="@+id/ScrollView02" 
                android:layout_width="wrap_content" 
                android:layout_height="325dp"
                xmlns:android="http://schemas.android.com/apk/res/android">
    				<HorizontalScrollView android:id="@+id/HorizontalScrollView01" 
                          android:layout_width="wrap_content" 
                          android:layout_height="wrap_content">
    			    	    <RelativeLayout
    			    	         android:layout_width="1650dp"
    			    			 android:layout_height="1700dp"
    			    			 android:id="@+id/main_gameview"
    			    	    ></RelativeLayout>
            		</HorizontalScrollView>
        </ScrollView>
    	<LinearLayout 
    	    android:layout_marginTop="325dp" 
    	    android:layout_width="fill_parent" 
    	    android:layout_height="50dp" 
    	    android:orientation="horizontal"
    	    android:layout_gravity="center_vertical"
    	    >
        <Button
            android:layout_width="100dp"
            android:layout_height="50dp"
            android:text="Thoat"
            android:id="@+id/quit_game" 
            />
        <Button
            android:layout_width="100dp"
            android:layout_height="50dp"
            android:text="Xin hoa"
            android:id="@+id/hoa" 
            />
        <Button
            android:layout_width="100dp"
            android:layout_height="50dp"
            android:text="Xin thua"
            android:id="@+id/thua"
            
            />
        </LinearLayout>
    </RelativeLayout>

    GameView.java
    Code:
    package com.example.app3;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.net.Socket;
    import java.net.UnknownHostException;
    import java.util.ArrayList;
    import java.util.List;
    
    import android.R.color;
    import android.annotation.SuppressLint;
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.content.Context;
    import android.content.DialogInterface;
    import android.content.Intent;
    import android.content.DialogInterface.OnClickListener;
    import android.graphics.Bitmap;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.graphics.Path;
    import android.graphics.Picture;
    import android.graphics.RectF;
    import android.location.Location;
    import android.os.Bundle;
    import android.widget.Button;
    import android.widget.LinearLayout;
    import android.widget.RelativeLayout;
    import android.widget.Toast;
    import android.util.AttributeSet;
    import android.view.DragEvent;
    import android.view.KeyEvent;
    import android.view.MotionEvent;
    import android.view.View;
    import android.view.View.OnDragListener;
    import android.view.View.OnKeyListener;
    import android.view.View.OnTouchListener;
    
    public class GameView extends Activity {
       // DrawView drawView;
    	private Socket client;
    	 private PrintWriter printwriter;
    	int WIN=0;
        int State=1;
        int FINAL=0;
        float xx,yy;
        int curr_x,curr_y;
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.gameview);
            Button Quit = (Button)findViewById(R.id.quit_game);
    		Button Thua = (Button)findViewById(R.id.thua);
    		Quit.setOnTouchListener(new OnTouchListener() {
    			
    			@Override
    			public boolean onTouch(View arg0, MotionEvent arg1) {
    				// TODO Auto-generated method stub
    				Thread th = new Thread(){
    					public void run(){
    						finish();
    					}
    				};
    			th.start();
    				return false;
    			}
    		});
    		Thua.setOnTouchListener(new OnTouchListener() {
    			
    			@Override
    			public boolean onTouch(View v, MotionEvent event) {
    				// TODO Auto-generated method stub
    				Button Z = (Button)findViewById(R.id.hoa);
    				 Z.setText("YOU LOSE");
    				 Thread room = new Thread(){
    						public void run(){
    							try {
    								sleep(5000);
    							} catch (InterruptedException e1) {
    								// TODO Auto-generated catch block
    								e1.printStackTrace();
    							}
    							finish();
    						}
    					};
    				room.start();
    				return false;
    			}
    		});
            final DrawView obj = new DrawView(this);
            RelativeLayout layout = (RelativeLayout) findViewById(R.id.main_gameview);
            layout.addView(obj,1275,1275);
            
            layout.setOnTouchListener(new OnTouchListener() {
    			@Override
    			public boolean onTouch(View v, MotionEvent event) {
    				// TODO Auto-generated method stub
    				//System.out.println(event.getX()+" "+event.getY());
    				if (event.getAction()==MotionEvent.ACTION_MOVE){
    					xx = event.getX();
    					yy = event.getY();
    					return true;
    				}
    				if (event.getAction()==MotionEvent.ACTION_UP){
    					if (event.getX()-xx<1 && event.getY()-yy<1){
    						int x = (Math.round(event.getX())/25)*25;
    						int y = (Math.round(event.getY())/25)*25;
    						if ((obj.canCheck(x,y)==true && WIN==0)){
    							//if (FINAL==0){
    							obj.check(x, y, State);
    							obj.requestLayout();
    							 if (obj.win(x/25,y/25,State)==true){
    								    //Toast.makeText(null, "You WIN", Toast.LENGTH_LONG);
    								 Button Z = (Button)findViewById(R.id.hoa);
    								 obj.setEnabled(false);
    								 if (State==1)
    									 Z.setText("YOU WIN");
    								 else
    								 Z.setText("YOU LOSE");
    								 WIN=State;
    								 obj.showLineWin();
    								 Thread room = new Thread(){
    										public void run(){
    											try {
    												sleep(5000);
    											} catch (InterruptedException e1) {
    												// TODO Auto-generated catch block
    												e1.printStackTrace();
    											}
    											finish();
    										}
    									};
    								room.start();
    							 }
    							//X.setText(x/25+"");
    							//Y.setText(y/25+"");
    							 try {
    							     client = new Socket("192.168.2.1", 9999);  //connect to server
    							     printwriter = new PrintWriter(client.getOutputStream(),true);
    							     printwriter.write(x/25+","+y/25);  //write the message to output stream
    							     printwriter.flush();
    							     printwriter.close();
    							     client.close();   //closing the connection
    							 
    							    } catch (UnknownHostException e) {
    							     e.printStackTrace();
    							    } catch (IOException e) {
    							     e.printStackTrace();
    							    }
    							curr_x=x;curr_y=y;
    							if (State==1) State=2;
    				    		else State=1;
    							}
    					}
    					return true;
    				}
    				return true;
    			}
    		});
        }
        protected void onDestroy()
        {
          super.onDestroy();
        }   
    }
    
    
    @SuppressLint("DrawAllocation")
    class DrawView extends View {
    	Paint paint = new Paint();
    	int map[][] = new int[55][55];
    	int x1=-1,y1=-1,x2=-1,y2=-1;
    	int StateWin=0;
    	int cx,cy,cs;
        public DrawView(Context context) {
            super(context);
            setFocusable(true);
            setFocusableInTouchMode(true);
            for (int i=0;i<50;i++)
            	for (int j=0;j<50;j++)
            		map[i][j]=0;
            paint.setColor(Color.RED);
        }
        public void showLineWin(){
        	postInvalidate();
        }
        public void check(int x,int y,int type){
        		map[x/25][y/25]=type;
        		postInvalidate();
        }
        public boolean win(int x,int y,int State){
        	cx=x;cy=y;cs=State;
        	int tx1=x,tx2=x,ty1=y,ty2=y;
        	if (map[x][y]==0) return false;
        	int inc=1;
        	
        	//COL
        	for (int i=1;y-i>=0;i++){
        		if (map[x][y]==map[x][y-i]){
        			inc++;
        			tx1=x;
        			ty1=y-i;
        		}else break;
        	}
        	for (int i=1;y+i<=50;i++){
        		if (map[x][y]==map[x][y+i]){
        			inc++;
        			tx2=x;
        			ty2=y+i;
        		}else break;
        	}
        	if (inc>=5){
        		x1=tx1;x2=tx2;
        		y1=ty1;y2=ty2;
        		StateWin=State;
        		return true;
        	}
        	//END COL
        	tx1=x;tx2=x;ty1=y;ty2=y;
        	//ROW
        	inc=1;
        	for (int i=1;x-i>=0;i++)
        		if (map[x][y]==map[x-i][y]){
        			inc++;
        			tx1=x-i;
        			ty1=y;
        		}else break;
        	for (int i=1;x+i<=50;i++)
        		if (map[x][y]==map[x+i][y]){
        			inc++;
        			tx2=x+i;
        			ty2=y;
        		}else break;
        	if (inc>=5){
        		x1=tx1;x2=tx2;
        		y1=ty1;y2=ty2;
        		StateWin=State;
        		return true;
        	}
        	//END ROW
        	tx1=x;tx2=x;ty1=y;ty2=y;
        	//CHEO 1
        	inc=1;
        	for (int i=1;x-i>=0 && y-i>=0 ;i++)
        		if (map[x][y]==map[x-i][y-i]){
        			inc++;
        			tx1=x-i;
        			ty1=y-i;
        		}else break;
    
        	for (int i=1;x+i<=50 && y+i<=50;i++)
        		if (map[x][y]==map[x+i][y+i]){
        			inc++;
        			tx2=x+i;
        			ty2=y+i;
        		} else break;
    
        	if (inc>=5) {x1=tx1;x2=tx2;
    		y1=ty1;y2=ty2;StateWin=State;return true;}
        	//END CHEO 1
        	tx1=x;tx2=x;ty1=y;ty2=y;
        	//CHEO 2
        	inc=1;
        	for (int i=1;x-i>=0 && y+i<=50;i++)
        		if (map[x][y]==map[x-i][y+i]){
        			inc++;
        			tx1=x-i;
        			ty1=y+i;
        		}else break;
    
        	for (int i=1;x+i<=50 && y-i>=0;i++)
        		if (map[x][y]==map[x+i][y-i]){
        			inc++;
        			tx2=x+i;
        			ty2=y-i;
        		}else break;
    
        	if (inc>=5) {x1=tx1;x2=tx2;
    		y1=ty1;y2=ty2;StateWin=State;return true;}
        	//END CHEO 2
    
        	
        	return false;
        }
        public boolean canCheck(int x,int y){
        	if (map[x/25][y/25]==0)
        		return true;
        	return false;
        }
        @Override
        public void onDraw(Canvas canvas) {
        		paint.setColor(Color.GRAY);
        		paint.setStrokeWidth(0);
        		for (int i=1;i<=51;i++){
        			canvas.drawLine(25*i, 0, 25*i, 1275, paint);
        			canvas.drawLine(0, i*25, 1275, i*25, paint);
        		}
        		for (int i=0;i<=50;i++)
        			for (int j=0;j<=50;j++)
        				if (map[i][j]==1){
        					paint.setColor(Color.GREEN);
        					canvas.drawCircle((float)(i*25.0+12.5), (float)(j*25+12.5),10, paint);
        					paint.setColor(Color.WHITE);
        					canvas.drawCircle((float)(i*25.0+12.5), (float)(j*25+12.5),5 , paint);
        				}
        				else if (map[i][j]==2){
        					paint.setColor(Color.RED);
        					paint.setStrokeWidth(5);
        					canvas.drawLine(i*25+5, j*25+5, i*25+20, j*25+20, paint);
        					canvas.drawLine(i*25+20, j*25+5, i*25+5, j*25+20, paint);
        				}
        		//paint.setStrokeWidth(5);
        		//paint.setColor(Color.GREEN);
        		//canvas.drawLine(0,0,100,100, paint);
        		if (StateWin!=0){
        			paint.setStrokeWidth(3);
        			if (StateWin==1)
        				paint.setColor(Color.GREEN);
        			else
        				paint.setColor(Color.RED);
        			canvas.drawLine((float)(x1*25+12.5),(float)(y1*25+12.5),(float)(x2*25+12.5),(float)(y2*25+12.5), paint);
        			
        		}
        }
    }
    Mong các bác giúp đỡ em...Chân thành cảm ơn các bác.

  2. #2
    Ngày gia nhập
    04 2009
    Nơi ở
    Hà Nội
    Bài viết
    733

    Đại loại như này:
    JAVA Code:
    1. // Get DisplayMetrics object.
    2.         DisplayMetrics metrics = new DisplayMetrics();
    3.         mContext.getWindowManager().getDefaultDisplay().getMetrics(metrics);           
    4.         params.height = metrics.heightPixels;
    5.         params.width = metrics.widthPixels;
    6.         // calculator position of view with hight and width of screen.
    7.                 // and draw view with canvas and position.
    Hỏi một câu thì chỉ dốt trong chốc lát.Nhưng nếu không hỏi thì bạn sẽ dốt suốt đời.

Các đề tài tương tự

  1. Làm sao để View và add dư liệu sử dụng Linq to SQL trong cùng 1 view
    Gửi bởi bkit48 trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 1
    Bài viết cuối: 08-05-2012, 10:47 AM
  2. Chung cư sky view - Căn hộ sky view Cầu giấy*m*
    Gửi bởi ephat_tt86 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 31-10-2011, 11:24 AM
  3. Dự án Sky View Cầu Giấy, Chung cư Sky View,căn hộ sky view
    Gửi bởi ephat_tt86 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 22-10-2011, 02:13 PM
  4. Mở view 2 từ view 1 trong lập trình Objective-C như thế nào?
    Gửi bởi hoanghuuvinh trong diễn đàn Thắc mắc lập trình Objective-C
    Trả lời: 3
    Bài viết cuối: 18-09-2011, 04:54 PM
  5. Căn hộ Sky View Cầu Giấy,can ho sky view cau giay cb S=88-117m2 T8-15
    Gửi bởi daiphat88 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 08-09-2011, 02:12 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn