开发实例系列:一、舒尔特方格小游戏,付源码和APK

您所在的位置:网站首页 微信小游戏走方格怎么弄 开发实例系列:一、舒尔特方格小游戏,付源码和APK

开发实例系列:一、舒尔特方格小游戏,付源码和APK

2024-07-01 13:21| 来源: 网络整理| 查看: 265

舒尔特方格 ,生成随机数,从小到大依次点击,时间越短越好。

底部带源码和apk下载

注意功能点:

一、使用TableLayout自动生成表格

       这一部分是参考网上的帖子,找不到原连接了;

       自定义TableLayout, 以下是源码:

public class TableBorderLayout extends TableLayout { private Context mContext; private BaseAdapter mAdapter; private int column = 0; //每行的个数 public TableBorderLayout(Context context, AttributeSet attrs) { super(context, attrs); this.mContext = context; setStretchAllColumns(true); } public void setAdapter(BaseAdapter baseAdapter, int column) { if (baseAdapter == null || baseAdapter.getCount() == 0) { return; } this.mAdapter = baseAdapter; this.column = column;//个数 drawLayout(); } private void drawLayout() { removeAllViews(); int realcount = mAdapter.getCount();//数据的总数,list.size(); 例如:size = 18 int count = 0; if (realcount < column) {//如果集合里的数据 小于 行个数 例如:18 > 5 count = column; } else if (realcount % column != 0) { // 18 % 5 = 3 3 != 0 count = realcount + column - (realcount % column); // 18 + 5 - 3 = 20 count=20 } else { count = realcount; } TableRow tableRow = null; //每一行的tableRow for (int i = 0; i < count; i++) { //i < 20, 会循环20次,添加20个格子,但数据总数只有18,所以最后两个是空的 final int index = i; View view = null; if (index >= realcount) { view = mAdapter.getView((realcount - 1), null, null); view.setVisibility(INVISIBLE);//没有数据不显示 } else { view = mAdapter.getView(index, null, null); } if (index % column == 0) { //整行,每次取余为0 就会新增一行实现自增长,最大数为20,个数为5,会增四行 tableRow = new TableRow(mContext); } if (tableRow != null) {//添加view tableRow.addView(view); } if (index % column == 0) { addView(tableRow, new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); } } } }

adapter源码:

public class MyAdapter extends BaseAdapter { private List dataList; private LayoutInflater mInflater; private int type; private View.OnClickListener clickListener; private Context context; private List isR = new ArrayList(); //随机色彩R private List isG = new ArrayList(); //随机色彩G private List isB = new ArrayList(); //随机色彩B public MyAdapter(Context context, List dataList, View.OnClickListener clickListener, int type) { this.mInflater = LayoutInflater.from(context); this.dataList = dataList;//总数据 this.clickListener = clickListener; this.type = type; //用来判断是 行个数是否为7、9 this.context = context; } public MyAdapter(Context context, List dataList, View.OnClickListener clickListener, int type, List isR, List isG, List isB) { this.mInflater = LayoutInflater.from(context); this.dataList = dataList; this.clickListener = clickListener; this.type = type; this.context = context; this.isR = isR; this.isG = isG; this.isB = isB; } @Override public int getCount() { return dataList.size(); } @Override public Object getItem(int i) { return dataList.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { if (view == null) { view = mInflater.inflate(R.layout.item_click_interface_list, null); } TextView textView = view.findViewById(R.id.tvTile); if (type == 7) { textView.setTextSize(20);//缩小字体 } else if (type == 9) { textView.setTextSize(16); } if (isR.size() > 0 && isG.size() > 0 && isB.size() > 0){//生成随机色 textView.setBackgroundColor(Color.rgb(isR.get(i+1), isG.get(i+2), isB.get(i+3))); } textView.setText("" + dataList.get(i).toString()); textView.setId(dataList.get(i).intValue());//设置ID textView.setOnClickListener(clickListener); return view; } }

二、打乱数字

      打乱数字比较简单,使用Collections.shuffle()方法,已下是关键代码:

//打乱数字 Collections.shuffle(numberList); shuffle(List) 方法用于随机排列随机使用一个默认的源指定的列表 这个方法很实用,在随机色彩也使用了该方法。 ...............................以上就是应用比较关键的代码.............................

三、应用截图

共有三种模式,普通模式{3x3, 5x5, 7x7, 9x9},素数模式{5x5},奇数模式{3x3, 5x5, 7x7}。 特殊的色彩方格模式:开启后方格底色将会带有颜色,以此来增加难度。

四、源码和APK下载

          源码:

                 github:  https://github.com/Mei-Bin/MyShulteProject

                 百度云:链接:https://pan.baidu.com/s/1pMZqNov 密码:oqqn

          APK:

                  百度云:链接:https://pan.baidu.com/s/1dFPl8FB 密码:oejm

五、最后的话:

              舒尔特这个游戏也挺有意思的,主要锻炼注意力................

    



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3