android弹球游戏前台代码,Android 实现弹球游戏

一,知识点。

1,如何自定义View,以及重写它的onDraw方法.

2,Intent实现界面跳转。

3,线程的使用。

4,弹出框框的使用。

二,具体实现代码。

MainLayout文件:

MainActivity文件

package com.example.my.fivegame;

import android.app.Application;

import android.content.Context;

import android.content.Intent;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Paint;

import android.os.Handler;

import android.os.Message;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.util.DisplayMetrics;

import android.view.Display;

import android.view.MotionEvent;

import android.view.View;

import android.view.Window;

import android.view.WindowManager;

import android.widget.Button;

import android.widget.Toast;

import java.util.ArrayList;

import java.util.List;

import java.util.Random;

import java.util.Timer;

import java.util.TimerTask;

import java.util.Vector;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

private Button start_btn,exit_btn;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

start_btn= (Button) findViewById(R.id.start_btn);

exit_btn= (Button) findViewById(R.id.exit_btn);

start_btn.setOnClickListener(this);

exit_btn.setOnClickListener(this);

}

@Override

protected void onRestart() {

super.onRestart();

Toast.makeText(this, "其实你无论选择什么都会回到这个界面,想不到吧", Toast.LENGTH_LONG).show();

}

@Override

public void onClick(View v) {

switch (v.getId())

{

case R.id.start_btn:

{

Intent i = new Intent();

i.setClass(MainActivity.this, Main2Activity.class);

this.startActivity(i);

break;

}

case R.id.exit_btn:

{

System.exit(0);

break;

}

}

}

}

Main2Activity文件

package com.example.my.fivegame;

import android.content.Context;

import android.content.DialogInterface;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Paint;

import android.os.Handler;

import android.os.Message;

import android.support.v7.app.AlertDialog;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.util.DisplayMetrics;

import android.view.Display;

import android.view.MotionEvent;

import android.view.View;

import android.view.Window;

import android.view.WindowManager;

import android.widget.Toast;

import java.util.ArrayList;

import java.util.List;

import java.util.Random;

import java.util.Timer;

import java.util.TimerTask;

public class Main2Activity extends AppCompatActivity {

private int tableWidth;

private int tableHeight;

private int racketY;

private final int RACKET_HEIGHT=30;

private final int RACKET_WIDTH=120;

private final int BALL_SIZE=16;

private int y_Speed=30;

private Random rand=new Random();

private double xyRate=rand.nextDouble()-0.5;

private int x_Speed=(int)(y_Speed*xyRate*2);

private int ballX=rand.nextInt(200)-20;

private int ballY=700;

private int racketX=rand.nextInt(200);

public boolean isLose=false;

private int nowRow=5;

private int nowRol=7;

private int[][] mp=new int[nowRow][nowRol];;

private int blocks_Wide=RACKET_WIDTH+40;

private int blocks_Height=RACKET_HEIGHT*2;

private int startX_block=25;

private int startY_block=100;

private int[] colormp={Color.RED,Color.GREEN,Color.BLUE,Color.YELLOW};

private int IntervalX=20;

private int IntervalY=30;

private int scores=0;

private AlertDialog.Builder builder;

private ListAnim=new ArrayList();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//setContentView(R.layout.activity_main2);

requestWindowFeature(Window.FEATURE_NO_TITLE);

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

final Main2Activity.GameView gameView=new Main2Activity.GameView(this);

setContentView(gameView);

gameView.setBackgroundResource(R.drawable.bg4);

WindowManager windowManager=getWindowManager();

Display display=windowManager.getDefaultDisplay();

DisplayMetrics metrics=new DisplayMetrics();

display.getMetrics(metrics);

tableHeight=metrics.heightPixels;

tableWidth=metrics.widthPixels;

racketY=tableHeight-300;

builder=new AlertDialog.Builder(this);

builder.setTitle("提示");

builder.setMessage("是否重开一局吗?");

builder.setPositiveButton("这次是意外,重开", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

dialog.dismiss();

Main2Activity.this.finish();

}

});

builder.setNegativeButton("认怂,就不重开", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

dialog.dismiss();

Main2Activity.this.finish();

}

});

Toast.makeText(this, racketY+"与"+tableHeight, Toast.LENGTH_SHORT).show();

initmp();

final Handler handler=new Handler()

{

@Override

public void handleMessage(Message msg) {

if(msg.what==0x123)

gameView.invalidate();

}

};

gameView.setOnTouchListener(new View.OnTouchListener() {

@Override

public boolean onTouch(View v, MotionEvent event) {

float x,y;

switch (event.getAction())

{

case MotionEvent.ACTION_DOWN: {

x = event.getX();

y = event.getY();

}

case MotionEvent.ACTION_MOVE:

{

racketX=(int)event.getX();

return true;

}

}

return false;

}

});

final Thread thread= new Thread()

{

boolean IsClick=false;

@Override

public void run() {

for(int i=0;i=top&&ballY-5<=botton&&ballX-5>=left&&ballX+5<=right)

{

scores+=10;

if (ballY - 5 >= top && ballY - 5 <= botton) {

y_Speed = -y_Speed;

Anim.remove(i);

break;

}

if (ballX - 5 >= left && ballX + 5 <= right) {

x_Speed = -x_Speed;

Anim.remove(i);

break;

}

}

}

}

};

final Timer timer=new Timer();

timer.schedule(new TimerTask() {

@Override

public void run() {

if(ballX<=0||ballX>=tableWidth-BALL_SIZE)

{

x_Speed=-x_Speed;

}

if(ballY>=racketY-BALL_SIZE&&(ballX<=racketX||ballX>racketX+RACKET_WIDTH))

{

timer.cancel();

isLose=true;

}

else if(ballY<=0||(ballY>=racketY-BALL_SIZE&&ballX>racketX&&ballX<=racketX+RACKET_WIDTH))

{

y_Speed=-y_Speed;

}

ballX+=x_Speed;

ballY+=y_Speed;

thread.start();

handler.sendEmptyMessage(0x123);

if(Anim.size()==0)

{

Toast.makeText(Main2Activity.this, "恭喜你成功吃完所有球", Toast.LENGTH_SHORT).show();

Main2Activity.this.finish();

}

}

},0,60);

}

void initmp()

{

scores=0;

for(int i=0;i

实现效果:

5eafedc74f4461715b7afbcbf0a92bff.pngda139f96f1a5af1b5973a952acc91d19.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值