Mã:
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.
Không chỉ dừng lại ở việc sử dụng nguyên liệu cao cấp, mỗi công trình còn được "chăm sóc" bằng 4 dịch vụ xuất sắc của Tre Nghệ. Từ việc tư vấn, thiết kế đến thi công và hoàn thiện, mọi quy trình đều...
Chất Lượng và Sáng Tạo: Kiến Trúc...