Trang 2/2 ĐầuĐầu 12
Hiện kết quả từ 11 tới 16 của 16
Like Tree2Likes

Chủ đề: TRÒ CHƠI LINE98 TRÊN ANDROID (code)


  1. #11
    Thành Viên Mới Avatar của hienvinh
    Tham gia
    Nov 2014
    Bài gửi
    8
    Có pro giúp sửa giao diện full màn hình dc ko ah??
    Lảm mãi mà ko được



  2. #12
    Thành Viên Chính Thức Avatar của hoivtam
    Tham gia
    Nov 2014
    Bài gửi
    38
    bạn đã làm những gì mà không được nói ra người khác mới biết mà giúp


    hienvinh likes this.

  3. #13
    Thành Viên Mới Avatar của hienvinh
    Tham gia
    Nov 2014
    Bài gửi
    8
    Quote Nguyên văn bởi hoivtam Xem bài viết
    bạn đã làm những gì mà không được nói ra người khác mới biết mà giúp
    Mình thử sửa những chổ liên quan đến chiều rộng mà ko dc. Cũng ko tìm ra dc vấn đề nằm ở chỗ nào nữa. khi test trên máy thật thì ko hiển thị full màn hình như trong hình dưới.


    Đây là code gốc
    Mã:
    import java.util.ArrayList;
    import java.util.Random;
    
    import android.content.Context;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.graphics.Point;
    import android.graphics.RadialGradient;
    import android.graphics.Rect;
    import android.graphics.Typeface;
    import android.util.Log;
    import android.view.MotionEvent;
    import android.view.SurfaceHolder;
    import android.view.SurfaceView;
    
    /*
     * Lớp nà y là giao diện hoạt động của Line
     */
    
    public class DrawBallPanel extends SurfaceView implements ISurfaceBall,
            SurfaceHolder.Callback {
    
        private final int XNUM = 9, YNUM = 9, sizeRectangle = 53;
        private int dxFirst = -1, dyFirst = -1, dau_x = -1, dau_y = -1;
        private BallThread thread = null;
        private Paint p = new Paint();
        private int[][] matrix = new int[XNUM][YNUM];
        private Ball[][] ball = new Ball[XNUM][YNUM];
        private ArrayList<Point> pointXY = new ArrayList<Point>();
        public boolean runsuccess = false, dachay = false;
    
        public DrawBallPanel(Context context) {
    
            super(context);
            this.innittial();
            thread = new BallThread(this.getHolder(), this);
            // TODO Auto-generated constructor stub
    
        }
    
        public void surfaceChanged(SurfaceHolder holder, int format, int width,
                int height) {
            // TODO Auto-generated method stub
    
        }
    
        public void surfaceCreated(SurfaceHolder holder) {
            // TODO Auto-generated method stub
            if (!thread.isAlive()) {
                Log.d("VAO DAY", "START THREAD");
                thread.start();
            }
        }
    
        public void surfaceDestroyed(SurfaceHolder holder) {
            // TODO Auto-generated method stub
    
        }
    
        public void innittial() {
            // TODO Auto-generated method stub
            for (int i = 0; i < XNUM; i++) {
                for (int j = 0; j < YNUM; j++) {
                    matrix[i][j] = 0;
                    ball[i][j] = null;
                }
            }
            p.setStyle(Paint.Style.FILL);
            p.setStrokeJoin(Paint.Join.ROUND);
            p.setStrokeCap(Paint.Cap.ROUND);
            getHolder().addCallback(this);
            this.generateSmallBall();
            this.ShowLargeBall();
            this.generateSmallBall();
        }
    
        public void drawBall(Canvas canvas) {
            // TODO Auto-generated method stub
            canvas.drawColor(Color.WHITE);
    
            synchronized (ball) {
                for (int i = 0; i < XNUM; i++) {
                    for (int j = 0; j < YNUM; j++) {
                        if (ball[i][j] != null) {
                            ball[i][j].drawBall(canvas);
                        }
                    }
                }
            }
            drawBackground(canvas);        
            nextBall(canvas);
            createButton(canvas);
        }
    
        private void createButton(Canvas canvas){
            int space=10;
            Paint p=new Paint();Typeface tf = Typeface.create("Times New Roman",Typeface.BOLD);p.setTextSize(22);p.setTypeface(tf);
            p.setAntiAlias(true);p.setDither(true);p.setColor(Color.GRAY);
            for(int i=0;i<4;i++){
                canvas.drawRect(new Rect(space, 620,space+100,this.getHeight()-15),p);            
                space+=120;
                
            }
            p.setColor(Color.WHITE);
            canvas.drawText(" GAME        OPTION       UNDO           TOP", 10, 650, p);
        }
        
        private void nextBall(Canvas canvas){
            int a=200;
            Paint p=new Paint();
            
            for(int i=0;i<XNUM;i++){
                for(int j=0;j<YNUM;j++){
                    if(matrix[i][j]==2&&ball[i][j]!=null){
                        RadialGradient gradient = new RadialGradient(a+4,
                                533, 8, Color.rgb(255, 240, 243), ball[i][j].p.getColor(),
                                android.graphics.Shader.TileMode.CLAMP);
                        p.setDither(true);
                        p.setShader(gradient);
                        p.setColor(ball[i][j].p.getColor());
                        canvas.drawCircle( a, 540, 15, p);
                        a+=30;
                    }
                }
            }
        }
        public boolean onTouchEvent(MotionEvent event) {
            synchronized (matrix) {
                int i = (int) (event.getX() / 53);
                int j = (int) (event.getY() / 53);
                if (i < XNUM && j < YNUM) {
                    switch (matrix[i][j]) {
                    case 1:
                        dau_x = i;
                        dau_y = j;
                        // Thuc hien dung qua bong jumper ball[dxFirst][dyFirst]
                        // va cho nhay qua bong hien tai
                        if (dxFirst != -1 && dyFirst != -1) {
                            ball[dxFirst][dyFirst].setJumpBall(false);
                            // System.out.println("Vi tri bong:" + dxFirst + " , "
                            // + dyFirst + " = false");
                            dxFirst = i;
                            dyFirst = j;
                            ball[dau_x][dau_y].setJumpBall(true);
                            // System.out.println("BONG NHAY LAN 2");
                        } else {
                            ball[dau_x][dau_y].setJumpBall(true);
                            dxFirst = i;
                            dyFirst = j;
                            // System.out.println("BONG NHAY LAN DAU");
                        }
                        break;
                    case 0:
                        if (dau_x != -1 && dau_y != -1
                                && (dau_x != i || dau_y != j)) {
                            Algorithm findWay = new Algorithm(matrix, dau_x, dau_y,
                                    i, j);
                            if (findWay.isGo()) {
                                matrix[dau_x][dau_y] = 0;
                                matrix[i][j] = 1;
                                ball[dau_x][dau_y].setJumpBall(false);
                                pointXY = findWay.getWay();
    
                                ball[i][j] = ball[dau_x][dau_y];
                                ball[i][j].setRunBall(true, pointXY);
                                ball[dau_x][dau_y] = null;
                                dau_x = -1;
                                dau_y = -1;
                                dxFirst = -1;
                                dyFirst = -1;
                                // System.out
                                // .println("OK TIM DUOC DUONG DI VA SINH BONG CON");
                            } else
                                System.out.println("KHONG TIM DUOC DUONG  ");
                        }
                        break;
                    case 2:
                        if (dau_x != -1 && dau_y != -1
                                && (dau_x != i || dau_y != j)) {
                            Algorithm findWay = new Algorithm(matrix, dau_x, dau_y,
                                    i, j);
                            if (findWay.isGo()) {
                                ball[dau_x][dau_y].setJumpBall(false);
                                pointXY = findWay.getWay();
                                matrix[dau_x][dau_y] = 0;
                                matrix[i][j] = 1;
                                int color = ball[i][j].getColor();
                                ball[i][j] = ball[dau_x][dau_y];
                                ball[i][j].setRunBall(true, pointXY);
                                ball[dau_x][dau_y] = null;
                                this.generateSmallBall(color);// chua xu ly sinh
                                                                // dung
                                                                // mau bong
                                // this.generateSmallBall(3);
                                dau_x = -1;
                                dau_y = -1;
                                dxFirst = -1;
                                dyFirst = -1;
                            } else
                                System.out.println("KHONG TIM DUOC DUONG  TH MT=2");
                        }
                        break;
    
                    }
    
                }
            }
            // this.generateSmallBall();
            return false;
        }
    
        private void drawBackground(Canvas canvas) {
            for (int i = 0; i < this.XNUM; i++) {
                for (int j = 0; j < this.YNUM; j++) {
                    p.setColor(Color.GRAY);
                    canvas.drawLines(new float[] { j * sizeRectangle,
                            i * sizeRectangle + sizeRectangle - 1,
                            j * sizeRectangle, i * sizeRectangle,
                            j * sizeRectangle + sizeRectangle - 1,
                            i * sizeRectangle }, p);
                    p.setColor(Color.BLACK);
                    canvas.drawLines(new float[] { j * sizeRectangle,
                            i * sizeRectangle + sizeRectangle - 2,
                            j * sizeRectangle + sizeRectangle - 2,
                            i * sizeRectangle + sizeRectangle - 2,
                            j * sizeRectangle + sizeRectangle - 2,
                            i * sizeRectangle }, p);
                }
            }
            p.setColor(Color.BLACK);
            canvas.drawLine(this.getWidth() - 3, 0, this.getWidth() - 3,
                    this.getHeight(), p);
            //-----------------------------------------------------draw text
            p.setColor(Color.GRAY);
            canvas.drawRect(new Rect(0, 477, this.getWidth(),512),p);        
            Typeface tf = Typeface.create("Times New Roman",Typeface.BOLD);
            p.setColor(Color.WHITE);p.setTextSize(25);p.setTypeface(tf);
            canvas.drawText("Score              Next Balls            Highest", 0, 502, p);
            p.setColor(Color.BLUE);
            canvas.drawText(Integer.toString(MARK), 10, 540, p);
        }
    
        private int MARK=0;
        int color1 = 0;
        int A = 0;
        int B = 0;
    
        public void runBall() {
            // TODO Auto-generated method stub
    
            synchronized (ball) {
    
                for (int i = 0; i < XNUM; i++) {
                    for (int j = 0; j < YNUM; j++) {
    
                        if (ball[i][j] != null && ball[i][j].isRunBall()) {
                            color1 = ball[i][j].getColor();
                            ball[i][j].runBall();
                            A = i;
                            B = j;
                            this.runsuccess = true;
                        }
                    }
                }
                if (runsuccess) {
                    runsuccess = false;
                    dachay = true;
                } else if (dachay) {
                    // Kiem tra vi tri bong moi.
                    // Neu OK thi cho Hide ball <Bang cach dat thuoc tinh an bong
                    // cho lop Ball>
                    // Danh sach bong duoc lay tu toa do bong can an
    
                    // System.out.println("PX="+pX1+" Color="+ color1);
                    Scoring score1 = new Scoring(getAllColor());
                    if (score1.TinhDiem(A, B, color1)) {
                        MARK+=score1.KetQua();System.out.println("XU LY TRONG RUN THREAD");
                        for (Point p : score1.arrayList) {
                            ball[p.x][p.y].setHideBall(true);
                        }
                    } else{
                        generateSmallBall();A=0;B=0;}
                    dachay = false;
                }
            }
        }
    
        public int[][] getAllColor() {
            int[][] a = new int[XNUM][YNUM];
            for (int i = 0; i < XNUM; i++) {
                for (int j = 0; j < YNUM; j++) {
                    if (ball[i][j] != null&&matrix[i][j]==1)
                        a[i][j] = ball[i][j].getColor();
                    else
                        a[i][j] = 0;
                }
            }
            return a;
        }
    
        public void jumpBall() {
            // TODO Auto-generated method stub
            synchronized (ball) {
                for (int i = 0; i < XNUM; i++) {
                    for (int j = 0; j < YNUM; j++) {
                        if (ball[i][j] != null) {
                            ball[i][j].jumpBall();
                        }
                    }
                }
            }
        }
    
        public void generateSmallBall(int color) {
            int index = 0;
            while (index < 1) {
                int row = new Random().nextInt(9);
                int column = new Random().nextInt(9);
                if (this.matrix[row][column] == 0) {
                    ball[row][column] = new Ball(row, column, color);
                    this.matrix[row][column] = 2;
                    index++;
                }
    
            }
        }
    
        public void generateSmallBall() {
            // Called generateLargeBall from small ball
            synchronized (ball) {
                int index = 0;
                int[] color = new int[] { Color.BLACK, Color.RED,
                        Color.rgb(255, 165, 0), Color.CYAN, Color.BLUE,
                        Color.GREEN, Color.rgb(255, 0, 255) };
                ShowLargeBall();
                while (index < 3) {
                    int row = new Random().nextInt(9);
                    int column = new Random().nextInt(9);
                    if (this.matrix[row][column] == 0) {
                        int i = new Random().nextInt(7);
                        ball[row][column] = new Ball(row, column, color[i]);
                        this.matrix[row][column] = 2;
                        index++;
                    }
    
                }
            }
            for (int i = 0; i < XNUM; i++) {
                for (int j = 0; j < YNUM; j++) {
                    System.out.print(matrix[j][i] + "  ");
                }
                System.out.println();
            }
            for (int i = 0; i < XNUM; i++) {
                for (int j = 0; j < YNUM; j++) {
                    if (ball[j][i] != null && ball[j][i].isJumpBall())
                        System.out.print(" X ");
                    else
                        System.out.print(" 0 ");
                }
                System.out.println();
            }
    
        }
    
        private void ShowLargeBall() {
            synchronized (ball) {
                for (int i = 0; i < XNUM; i++) {
                    for (int j = 0; j < YNUM; j++) {
                        if (matrix[i][j] == 2) {
                            matrix[i][j] = 1;
                            ball[i][j].setSizeBall(true);
                            Scoring score1 = new Scoring(getAllColor());
                            if (score1.TinhDiem(i, j, ball[i][j].getColor())) {
                                MARK+=score1.KetQua();
                                System.out.println("XU LY TRONG LARGBALL");
                                for (Point p : score1.arrayList) {
                                    ball[p.x][p.y].setHideBall(true);
                                }
                            }
                        }
                    }
                }
            }
        }
    
        public void hideBall() {
            // TODO Auto-generated method stub
            synchronized (ball) {
    
                for (int i = 0; i < XNUM; i++) {
                    for (int j = 0; j < YNUM; j++) {
                        if (ball[i][j] != null && ball[i][j].getLarg_radius() > 0
                                && ball[i][j].isHideBall()) {
                            ball[i][j].hideBall();
                        }
                        if (ball[i][j] != null && ball[i][j].isHideBall()
                                && ball[i][j].getLarg_radius() <= 0) {
                            ball[i][j] = null;
                            matrix[i][j] = 0;
                            System.out.println("DA NULL BONG= " + i + " , " + j);
                        }
    
                    }
                }
            }
            /*
             * if (arr != null) for (Point p : arr) { if
             * (ball[p.x][p.y].getLarg_radius() > 0 && ball[p.x][p.y] != null) {
             * ball[p.x][p.y].setHideBall(true); matrix[p.x][p.y] = 0;
             * ball[p.x][p.y].hideBall(); } else {
             * ball[p.x][p.y].setHideBall(false); if (p.equals(arr.get(arr.size() -
             * 1))) { arr = null; break; } }
             * 
             * }
             */
    
        }
    
    }



    Lần sửa cuối bởi hienvinh; 19-11-14 lúc 12:46 PM

  4. #14
    Thành Viên Chính Thức Avatar của hoivtam
    Tham gia
    Nov 2014
    Bài gửi
    38
    bạn chỉnh lại biến sizeRectangle coi sao! Lấy chiều rộng của màng hình chia cho số cột
    Vi dụ phone bạn có màn hình là 480x800 thì
    sizeRectangle = 480/9 = 53


    hienvinh likes this.

  5. #15
    Thành Viên Mới Avatar của hienvinh
    Tham gia
    Nov 2014
    Bài gửi
    8
    Quote Nguyên văn bởi hoivtam Xem bài viết
    bạn chỉnh lại biến sizeRectangle coi sao! Lấy chiều rộng của màng hình chia cho số cột
    Vi dụ phone bạn có màn hình là 480x800 thì
    sizeRectangle = 480/9 = 53
    Thanks bạn nhiều!
    Lúc đầu ko hiểu 53 ở đâu ra. nên sửa lung tung mà ko dc
    Dùng luôn code này để lấy kích thước màn hình
    DisplayMetrics displaymetrics = getResources().getDisplayMetrics();
    displayMetrics.widthPixels (heightPixels)



  6. #16
    Thành Viên Chính Thức Avatar của hoivtam
    Tham gia
    Nov 2014
    Bài gửi
    38
    không có gì đâu bạn, giúp được thì giúp



Trang 2/2 ĐầuĐầu 12

Đánh dấu

Quyền viết bài

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