android 2048小游戏实现代码

本文详细介绍了Android平台上2048小游戏的实现过程,包括GameView类中二维数组的卡片布局,卡片Card的显示逻辑,最高分BastScode的存储以及MainActivity的计分和事件处理。在代码实现中,特别提到了滑动操作的处理和适配不同屏幕尺寸的设置。
摘要由CSDN通过智能技术生成

一、游戏界面效果显示
在这里插入图片描述
二、布局Activity.xml代码

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="得分"
        android:textSize="20sp" />

    <TextView
        android:id="@+id/tvSorce"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:layout_width="145dp"
        android:layout_height="wrap_content" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="最高分"
        android:textSize="20sp" />

    <TextView
        android:id="@+id/maxSorce"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />


</LinearLayout>

<TextView
    android:layout_width="match_parent"
    android:layout_height="80dp"
    android:background="#FFCC99"
    android:text="宇琴的2048"
    android:textSize="30sp"
    android:gravity="center"/>

<com.example.hp.yq2048.GameView
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:id="@+id/gameView" />
<Button
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/bt_cx"
    android:text="重来"
    android:background="#FFFFCC"/>
三、GramView.java代码

public class GameView extends GridLayout {
//我们需要定义一个二维数组来记录GameView初始化时生成的16个卡片类
private Card[][] cardsMap = new Card[4][4];
private static GameView gameView = null;
public static GameView getGameView() {
return gameView;
}

private List<Point> points = new ArrayList<Point>();

public GameView(Context context) {
    super(context);
    gameView = this;
    initGameView();
}

public GameView(Context context, AttributeSet attrs) {
    super(context, attrs);
    gameView = this;
    initGameView();
}

public GameView(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    gameView = this;
    initGameView();
}


/**
 * 初始化界面
 */
private void initGameView(){
    Log.d("233","0");
    setColumnCount(4);  //指名是4列的
    setBackgroundColor(0xffbbada0);
    addCards(getCardWitch(),getCardWitch());
    startGame();
    setOnTouchListener(new OnTouchListener() {
        private float startX,startY;//初始的位置
        private float offsetX,offsetY; //偏移的值

        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
            switch (motionEvent.getAction()){
                case MotionEvent.ACTION_DOWN:
                    startX  = motionEvent.getX();
                    startY = motionEvent.getY();
                    break;
                case MotionEvent.ACTION_UP:
                    offsetX = motionEvent.getX()-startX;
                    offsetY = motionEvent.getY()-startY;
                    i
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值