100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 开发实例系列:一 舒尔特方格小游戏 付源码和APK

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

时间:2023-01-12 18:04:20

相关推荐

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

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

底部带源码和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) {//添加viewtableRow.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<Integer> dataList;private LayoutInflater mInflater;private int type;private View.OnClickListener clickListener;private Context context;private List<Integer> isR = new ArrayList<>(); //随机色彩Rprivate List<Integer> isG = new ArrayList<>(); //随机色彩Gprivate List<Integer> isB = new ArrayList<>(); //随机色彩Bpublic MyAdapter(Context context, List<Integer> dataList, View.OnClickListener clickListener, int type) {this.mInflater = LayoutInflater.from(context);this.dataList = dataList;//总数据this.clickListener = clickListener;this.type = type; //用来判断是 行个数是否为7、9this.context = context;}public MyAdapter(Context context, List<Integer> dataList, View.OnClickListener clickListener, int type, List<Integer> isR, List<Integer> isG, List<Integer> 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());//设置IDtextView.setOnClickListener(clickListener);return view;}}

二、打乱数字

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

//打乱数字Collections.shuffle(numberList);shuffle(List<?>)方法用于随机排列随机使用一个默认的源指定的列表这个方法很实用,在随机色彩也使用了该方法。

...............................以上就是应用比较关键的代码.............................

三、应用截图

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

四、源码和APK下载

源码:

github: /Mei-Bin/MyShulteProject

百度云:链接:/s/1pMZqNov 密码:oqqn

APK:

百度云:链接:/s/1dFPl8FB 密码:oejm

五、最后的话:

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。