package com.yhg.xinyi.game;
import androidx.appcompat.app.AppCompatActivity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.TextView;
import com.yhg.xinyi.R;
public class GameActivity extends AppCompatActivity {
ImageButton ib00,ib01,ib02,ib10,ib11,ib12,ib20,ib21,ib22;
Button restartBtn;
TextView timeTv;
// 每行的图片个数
private int imageX = 3;
private int imageY = 3; //每列的图片的个数
// 图片的总数目
private int imgCount = imageX*imageY;
// 空白区域的位置
private int blankSwap = imgCount-1;
// 初始化空白区域的按钮id
private int blankImgid = R.id.pt_ib_02x02;
// 定义计数时间的变量
int time = 0;
// 存放碎片的数组,便于进行统一的管理
private int[]image = {R.mipmap.img_xiaoxiong_00x00,R.mipmap.img_xiaoxiong_00x01,R.mipmap.img_xiaoxiong_00x02,
R.mipmap.img_xiaoxiong_01x00,R.mipmap.img_xiaoxiong_01x01,R.mipmap.img_xiaoxiong_01x02,
R.mipmap.img_xiaoxiong_02x00,R.mipmap.img_xiaoxiong_02x01,R.mipmap.img_xiaoxiong_02x02};
// 声明一个图片数组的下标数组,随机排列这个数组
private int[]imageIndex = new int[image.length];
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
if (msg.what==1) {
time++;
timeTv.setText("时间 : "+time+" 秒");
handler.sendEmptyMessageDelayed(1,1000);
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game);
initView();
// 打乱碎片的函数
disruptRandom();
handler.sendEmptyMessageDelayed(1,1000);
}
// 随机打乱数组当中元素,以不规则的形式进行图片显示
private void disruptRandom() {
for (int i = 0; i < imageIndex.length; i++) {
imageIndex[i] = i;
}
// 规定20次,随机选择两个角标对应的值进行交换
int rand1,rand2;
for (int j = 0; j < 20; j++) {
// 随机生成第一个角标 生成0-8之间的随机数
rand1 = (int)(Math.random()*(imageIndex.length-1));
// 第二次随机生成的角标,不能和第一次随机生成的角标相同,如果相同,就不方便交换了
do {
rand2 = (int)(Math.random()*(imageIndex.length-1));
if (rand1!=rand2) {
break;
}
}while (true);
// 交换两个角标上对应的值
swap(rand1,rand2);
}
// 随机排列到指定的控件上
ib00.setImageResource(image[imageIndex[0]]);
ib01.setImageResource(image[imageIndex[1]]);
ib02.setImageResource(image[imageIndex[2]]);
ib10.setImageResource(image[imageIndex[3]]);
ib11.setImageResource(image[imageIndex[4]]);
ib12.setImageResource(image[imageIndex[5]]);
ib20.setImageResource(image[imageIndex[6]]);
ib21.setImageResource(image[imageIndex[7]]);
ib22.setImageResource(image[imageIndex[8]]);
}
// 交换数组指定角标上的数据
private void swap(int rand1, int rand2) {
int temp = imageIndex[rand1];
imageIndex[rand1] = imageIndex[rand2];
imageIndex[rand2] = temp;
}
/* 初始化控件*/
private void initView() {
ib00 = findViewById(R.id.pt_ib_00x00);
ib01 = findViewById(R.id.pt_ib_00x01);
ib02 = findViewById(R.id.pt_ib_00x02);
ib10 = findViewById(R.id.pt_ib_01x00);
ib11 = findViewById(R.id.pt_ib_01x01);
ib12 = findViewById(R.id.pt_ib_01x02);
ib20 = findViewById(R.id.pt_ib_02x00);
ib21 = findViewById(R.id.pt_ib_02x01);
ib22 = findViewById(R.id.pt_ib_02x02);
timeTv = findViewById(R.id.pt_tv_time);
restartBtn = findViewById(R.id.pt_btn_restart);
}
public void onClick(View view) {
int id = view.getId();
// 九个按钮执行的点击事件的逻辑应该是相同的,如果有空格在周围,可以改变图片显示的位置,否则点击事件不响应
switch (id) {
case R.id.pt_ib_00x00:
move(R.id.pt_ib_00x00,0);
break;
case R.id.pt_ib_00x01:
move(R.id.pt_ib_00x01,1);
break;
case R.id.pt_ib_00x02:
move(R.id.pt_ib_00x02,2);
break;
case R.id.pt_ib_01x00:
move(R.id.pt_ib_01x00,3);
break;
case R.id.pt_ib_01x01:
move(R.id.pt_ib_01x01,4);
break;
case R.id.pt_ib_01x02:
move(R.id.pt_ib_01x02,5);
break;
case R.id.pt_ib_02x00:
move(R.id.pt_ib_02x00,6);
break;
case R.id.pt_ib_02x01:
move(R.id.pt_ib_02x01,7);
break;
case R.id.pt_ib_02x02:
move(R.id.pt_ib_02x02,8);
break;
}
}
/*表示移动指定位置的按钮的函数,将图片和空白区域进行交换*/
private void move(int imagebuttonId, int site) {
// 判断选中的图片在第几行
int sitex = site / imageX;
int sitey = site % imageY; //第几列
// 获取空白区域的坐标
int blankx = blankSwap / imageX;
int blanky = blankSwap % imageY;
// 可以移动的条件有两个
// 1.在同一行,列数相减,绝对值为1,可移动 2.在同一列,行数相减,绝对值为1,可以移动
int x = Math.abs(sitex-blankx);
int y = Math.abs(sitey-blanky);
if ((x==0&&y==1)||(y==0&&x==1)){
// 通过id,查找到这个可以移动的按钮
ImageButton clickButton = findViewById(imagebuttonId);
clickButton.setVisibility(View.INVISIBLE);
// 查找到空白区域的按钮
ImageButton blankButton = findViewById(blankImgid);
// 将空白区域的按钮设置图片
blankButton.setImageResource(image[imageIndex[site]]);
// 移动之前是不可见的,移动之后,将控件设置为可见
blankButton.setVisibility(View.VISIBLE);
// 将改变角标的过程记录到存储图片位置数组当中
swap(site,blankSwap);
// 新的空白区域位置更新等于传入的点击按钮的位置
blankSwap = site;
blankImgid = imagebuttonId;
}
// 判断本次移动完成后,是否完成了拼图游戏
judgeGameOver();
}
/* 判断拼图是否成功*/
private void judgeGameOver() {
boolean loop = true; //定义标志位
for (int i = 0; i < imageIndex.length; i++) {
if (imageIndex[i]!=i) {
loop = false;
break;
}
}
if (loop) {
// 拼图成功了
// 停止计时
handler.removeMessages(1);
// 拼图成功后,禁止玩家继续移动按钮
ib00.setClickable(false);
ib01.setClickable(false);
ib02.setClickable(false);
ib10.setClickable(false);
ib11.setClickable(false);
ib12.setClickable(false);
ib20.setClickable(false);
ib21.setClickable(false);
ib22.setClickable(false);
ib22.setImageResource(image[8]);
ib22.setVisibility(View.VISIBLE);
// 弹出提示用户成功的对话框
AlertDialog.Build
没有合适的资源?快使用搜索试试~ 我知道了~
安卓大作业使用AndroidStudio开发的星座app源码.zip
共174个文件
png:61个
xml:47个
java:38个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 22 下载量 112 浏览量
2022-06-15
18:14:45
上传
评论 53
收藏 2.61MB ZIP 举报
温馨提示
安卓大作业使用AndroidStudio开发的星座app源码,一个看星座、配对、推荐的app。 安卓大作业使用AndroidStudio开发的星座app源码,一个看星座、配对、推荐的app。安卓大作业使用AndroidStudio开发的星座app源码,一个看星座、配对、推荐的app。安卓大作业使用AndroidStudio开发的星座app源码,一个看星座、配对、推荐的app。安卓大作业使用AndroidStudio开发的星座app源码,一个看星座、配对、推荐的app。安卓大作业使用AndroidStudio开发的星座app源码,一个看星座、配对、推荐的app。安卓大作业使用AndroidStudio开发的星座app源码,一个看星座、配对、推荐的app。安卓大作业使用AndroidStudio开发的星座app源码,一个看星座、配对、推荐的app。安卓大作业使用AndroidStudio开发的星座app源码,一个看星座、配对、推荐的app。安卓大作业使用AndroidStudio开发的星座app源码,一个看星座、配对、推荐的app。安卓大作业使用AndroidStudio开发的星座app源
资源推荐
资源详情
资源评论
收起资源包目录
安卓大作业使用AndroidStudio开发的星座app源码.zip (174个子文件)
gradlew.bat 2KB
img_xiaoxiong_01x01.bmp 22KB
img_xiaoxiong_00x02.bmp 22KB
img_xiaoxiong_02x01.bmp 22KB
img_xiaoxiong_02x02.bmp 22KB
img_xiaoxiong_01x02.bmp 22KB
img_xiaoxiong_02x00.bmp 22KB
img_xiaoxiong_00x00.bmp 22KB
img_xiaoxiong_01x00.bmp 22KB
img_xiaoxiong_00x01.bmp 22KB
movie.db 184KB
.gitignore 208B
.gitignore 6B
build.gradle 1KB
build.gradle 530B
settings.gradle 41B
gradlew 5KB
ocr-sdk.jar 78KB
gradle-wrapper.jar 53KB
GameActivity.java 9KB
MainActivity.java 8KB
StarFragment.java 6KB
AssetsDatabaseManager.java 6KB
PartnerFragment.java 5KB
LuckBean.java 5KB
MeFragment.java 4KB
ParnterAnalysisBean.java 4KB
MovieActivity.java 4KB
StarAnalysisActivity.java 4KB
ParnterAnalysisActivity.java 4KB
StarBean.java 3KB
MovieInfoAdapter.java 3KB
movieInfoBean.java 3KB
LuckAnalysisActivity.java 3KB
AssetsUtils.java 3KB
DescActivity.java 2KB
LuckBaseAdapter.java 2KB
StarBaseAdapter.java 2KB
GuideActivity.java 2KB
WelcomeActivity.java 2KB
LuckAnalysisAdapter.java 2KB
LuckFragment.java 2KB
LoadDataAsyncTask.java 2KB
AnalysisBaseAdapter.java 2KB
StarPagerAdapter.java 1KB
ExampleUnitTest.java 1KB
HttpUtils.java 1KB
UniteApp.java 1KB
GuideAdapter.java 1KB
URLContent.java 1KB
AddItemAdapter.java 877B
ExampleInstrumentedTest.java 740B
LuckItemBean.java 736B
StarAnalysisBean.java 724B
DBManager.java 526B
DBOpenHelper.java 477B
MallActivity.java 358B
welcome.jpg 533KB
pic_guanggao.jpg 158KB
pic_star.jpg 34KB
icon.jpg 11KB
yangtu.jpg 9KB
xzcontent.json 7KB
loading3.png 191KB
loading2.png 136KB
loading1.png 94KB
shizi.png 66KB
tianxie.png 61KB
tianping.png 57KB
jvxie.png 53KB
chunv.png 53KB
jinniu.png 52KB
shuiping.png 52KB
mojie.png 51KB
shuangzi.png 51KB
shuangyv.png 50KB
sheshou.png 48KB
baiyang.png 47KB
e.png 31KB
b.png 31KB
a.png 30KB
l.png 30KB
f.png 29KB
j.png 28KB
d.png 28KB
g.png 28KB
k.png 28KB
i.png 28KB
c.png 27KB
h.png 27KB
ic_launcher_round.png 16KB
ic_launcher_round.png 12KB
ic_launcher.png 10KB
bg_defualt_220x150.png 8KB
ic_launcher.png 8KB
ic_launcher_round.png 7KB
ic_launcher_round.png 5KB
ic_launcher.png 5KB
ic_launcher.png 4KB
ic_launcher_round.png 3KB
共 174 条
- 1
- 2
程序员张小妍
- 粉丝: 1w+
- 资源: 2577
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
前往页