1
0
mirror of https://github.com/bspeice/itcs4180 synced 2024-11-12 18:38:24 -05:00

Functionality for HW3. Tried to seperate Tile class and MainActivity.

Has 2 issues. First is that a completed row has the Tile ImageViews
change size and second is that finish()does not properly close the
entire application.
This commit is contained in:
tokugawa 2014-02-24 19:20:43 -05:00
parent 05dfaa8ebf
commit 0a80acace1
5 changed files with 222 additions and 5 deletions

View File

@ -194,7 +194,8 @@
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_weight="1"
android:text="@string/btnNewGame" />
android:text="@string/btnNewGame"
android:onClick="newGame"/>
<Button
android:id="@+id/btnUnCover"
@ -202,7 +203,8 @@
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_weight="1"
android:text="@string/btnUnCover" />
android:text="@string/btnUnCover"
android:onClick="uncover" />
</LinearLayout>
</LinearLayout>

View File

@ -3,5 +3,7 @@
<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
<dimen name="imageHeight">80dp</dimen>
<dimen name="imageWidth">80dp</dimen>
</resources>

View File

@ -7,16 +7,39 @@ package com.uncc.hw3;
* MainActivity.java
*/
import java.util.ArrayList;
import java.util.Collections;
import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.ImageView;
public class MainActivity extends Activity {
public class MainActivity extends Activity
{
ImageView iv;
public int [] imageViews = {R.id.imgTile1_1, R.id.imgTile1_2, R.id.imgTile1_3, R.id.imgTile1_4,
R.id.imgTile2_1, R.id.imgTile2_2, R.id.imgTile2_3, R.id.imgTile2_4,
R.id.imgTile3_1, R.id.imgTile3_2, R.id.imgTile3_3, R.id.imgTile3_4,
R.id.imgTile4_1, R.id.imgTile4_2, R.id.imgTile4_3, R.id.imgTile4_4,};
public int[] iconIds = {R.drawable.diamond, R.drawable.garnet, R.drawable.gem, R.drawable.pearl, R.drawable.ruby, R.drawable.sapphire, R.drawable.swarovski, R.drawable.toppaz};
static ArrayList<Tile> tiles;
static ArrayList<Tile> focusImages;
Handler handler = new Handler();
static int focusIndex;
static long startTime, endTime;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
newGame((View)findViewById(R.id.LinearLayout1));
focusImages.get(focusIndex).show();
}
@Override
@ -26,4 +49,64 @@ public class MainActivity extends Activity {
return true;
}
public void newGame(View v)
{
tiles = new ArrayList<Tile>();
focusImages = new ArrayList<Tile>();
ArrayList<Tile> focusImagesTemp = new ArrayList<Tile>();
//Create list of board tiles and tiles to find
for(int x: iconIds)
{
tiles.add(new Tile(null, x));
tiles.add(new Tile(null, x));
focusImagesTemp.add(new Tile((ImageView)findViewById(R.id.imgResult), x));
}
//Shuffle Tiles
Collections.shuffle(tiles);
Collections.shuffle(focusImagesTemp);
//Set focusImages list
for(int x=0; x<focusImagesTemp.size(); x++)
{
focusImages.add(focusImagesTemp.get(x));
focusImages.add(focusImagesTemp.get(x));
}
//Assign ImageViews id to the tiles and assign listener to all imageViews
for(int x=0; x<imageViews.length; x++)
{
tiles.get(x).setImageView((ImageView)findViewById(imageViews[x]));
tiles.get(x).reset();
((ImageView)findViewById(imageViews[x])).setOnClickListener(tiles.get(x));
}
//reset focus images and show
focusIndex = 0;
focusImages.get(focusIndex).show();
startTime = System.currentTimeMillis();
}
public void uncover(View v)
{
//Show all of the tiles
for(int x=0; x<imageViews.length; x++)
{
tiles.get(x).show();
}
handler.postDelayed(new Runnable() {
public void run() {
for(int x=0; x<imageViews.length; x++)
{
//Cover the tiles that aren't already found
if(!tiles.get(x).getMatched())
{
tiles.get(x).cover();
}
}
}
}, 1000);
}
}

View File

@ -49,8 +49,12 @@ public class ResultActivity extends Activity {
public void onClick(View v) {
// Figure out if the Try Again or Exit button was clicked
Intent intent = new Intent(this, MainActivity.class);
if (v.getId() == R.id.btnTryAgain)
startActivity(new Intent(this, MainActivity.class));
{
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
else if (v.getId() == R.id.btnExit)
finish();
}

View File

@ -0,0 +1,126 @@
package com.uncc.hw3;
import android.app.Activity;
import android.content.Intent;
import android.os.Handler;
import android.view.View;
import android.widget.ImageView;
/*
* Bradlee Speice, Brandon Rodenmayer
* ITIS 4180
* Homework 3
* ResultActivity.java
*/
public class Tile implements View.OnClickListener
{
private ImageView iv;
private int id;
private boolean show;
private boolean matched;
private boolean touchEnabled;
Handler handler= new Handler();
public Tile(ImageView iv, int id)
{
this.iv = iv;
this.id = id;
show = false;
matched = false;
touchEnabled = true;
}
public int getId()
{
return id;
}
public void setId(int id)
{
this.id = id;
}
public boolean getShow()
{
return show;
}
public void show()
{
show = true;
touchEnabled = false;
iv.setImageResource(id);
}
public void cover()
{
show = false;
touchEnabled = true;
iv.setImageResource(R.drawable.cover);
}
public void reset()
{
show = false;
touchEnabled = true;
matched = false;
iv.setImageResource(R.drawable.cover);
}
public boolean touchEnabled()
{
return touchEnabled;
}
public boolean getMatched()
{
return matched;
}
public void setMatched()
{
matched = true;
}
public void setImageView(ImageView iv)
{
this.iv = iv;
}
public void onClick(View v)
{
if(!matched)
{
if(touchEnabled)
{
show();
if(id==MainActivity.focusImages.get(MainActivity.focusIndex).getId())
{
setMatched();
try
{
MainActivity.focusIndex++;
MainActivity.focusImages.get(MainActivity.focusIndex).show();
}
catch(Exception e)
{
Intent intent = new Intent(iv.getContext(), ResultActivity.class);
MainActivity.endTime = System.currentTimeMillis();
intent.putExtra("ELAPSED_TIME", (float)((MainActivity.endTime - MainActivity.startTime)/1000.0));
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
iv.getContext().startActivity(intent);
}
}
else
{
handler.postDelayed(new Runnable() {
public void run() {
cover();
}
}, 1000);
}
}
}
}
}