lundi 2 mars 2015

skipping frames android app



This is my first go at a android app and to be honest I don't have the biggest grasp of what I'm doing. I'm trying to create a replica of the game Simon says where a sequence of colors are shown on the screen and then you are supposed to mimic them. I've managed to make the program recognize if the correct sequence has been inputed but when the next sequence is about to be displayed the program freezes, and instead of showing the colors one by one, they are all activated at the same time.


I'm don't have a clue if i've done a rookie mistake but it would be appreciated if someone could help, or atleast point me in the right direction of fixing it.


Here's the code:



package gymnasie.stefanlopar.se.gymnasie;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;

import android.os.Handler;


public class MainActivity extends ActionBarActivity {

static String jahap="", s="";
static int runda=0, ratt=0, level=3, talx, etttal;
static Button knapp1, knapp2, knapp3, knapp4, knapp5, knapp6, knapp7, knapp8, knapp9, knappstart;
static boolean fel=false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
knapp1= (Button) findViewById(R.id.ruta1);
knapp2= (Button) findViewById(R.id.ruta2);
knapp3= (Button) findViewById(R.id.ruta3);
knapp4= (Button) findViewById(R.id.ruta4);
knapp5= (Button) findViewById(R.id.ruta5);
knapp6= (Button) findViewById(R.id.ruta6);
knapp7= (Button) findViewById(R.id.ruta7);
knapp8= (Button) findViewById(R.id.ruta8);
knapp9= (Button) findViewById(R.id.ruta9);
knappstart= (Button) findViewById(R.id.startknapp);
for(int i = 0 ; i <= 1; i++){
talx= ((int)(Math.random()*9)+1);
jahap=jahap+talx;
}


knappar();

}
public void nasta(){
talx= ((int)(Math.random()*9)+1);
jahap=jahap+talx;
print(level - 1);
Log.i("ordning", jahap);
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
private void knappar(){

knappstart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
nasta();
knappstart.setVisibility(View.GONE);
}
});

knapp1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
koll(1);
}
});
knapp2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
koll(2);
}
});
knapp3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
koll(3);
}
});
knapp4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
koll(4);
}
});
knapp5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
koll(5);
}
});
knapp6.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
koll(6);
}
});
knapp7.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
koll(7);
}
});
knapp8.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
koll(8);
}
});
knapp9.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
koll(9);
}
});



}
public void print(int langd){
for (int i = 0 ; i <=langd; i++){

s=""+jahap.charAt(i);
etttal=Integer.parseInt(s);
visa(etttal);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {


}


}
}
public void koll(int sak){
s=""+jahap.charAt(runda);
etttal=Integer.parseInt(s);
if(sak==etttal){
runda++; ratt++;
}
if(ratt==level){
level++;
nasta();
ratt=0; runda=0;
}
visa(sak);
}


public void visa(int vilkenknapp){
if(vilkenknapp==1) {
knapp1.setBackgroundResource(R.drawable.rod);
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
knapp1.setBackgroundResource(R.drawable.mybutton);
}
}, 200);
}
else if(vilkenknapp==2){
knapp2.setBackgroundResource(R.drawable.gron);
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
knapp2.setBackgroundResource(R.drawable.mybutton);
}
}, 200);
}
else if(vilkenknapp==3){
knapp3.setBackgroundResource(R.drawable.bla);
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
knapp3.setBackgroundResource(R.drawable.mybutton);
}
}, 200);
}
else if(vilkenknapp==4){
knapp4.setBackgroundResource(R.drawable.rosa);
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
knapp4.setBackgroundResource(R.drawable.mybutton);
}
}, 200);
}
else if(vilkenknapp==5){
knapp5.setBackgroundResource(R.drawable.orange);
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
knapp5.setBackgroundResource(R.drawable.mybutton);
}
}, 200);
}else if(vilkenknapp==6){
knapp6.setBackgroundResource(R.drawable.gul);
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
knapp6.setBackgroundResource(R.drawable.mybutton);
}
}, 200);
}
else if(vilkenknapp==7){
knapp7.setBackgroundResource(R.drawable.lila);
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
knapp7.setBackgroundResource(R.drawable.mybutton);
}
}, 200);
}
else if(vilkenknapp==8){
knapp8.setBackgroundResource(R.drawable.brun);
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
knapp8.setBackgroundResource(R.drawable.mybutton);
}
}, 200);
}
else if(vilkenknapp==9){
knapp9.setBackgroundResource(R.drawable.gra);
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
knapp9.setBackgroundResource(R.drawable.mybutton);
}
}, 200);
}

}


@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();

//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}

return super.onOptionsItemSelected(item);
}


}




Aucun commentaire:

Enregistrer un commentaire