commit 65c00bfba670aa56bd6ea0643a5ea88ef1ea9ed8
parent b944258a233a05226690e3cf52a564a738180a50
Author: Bertrand BRUN <bertrand0brun@gmail.com>
Date: Thu, 10 Feb 2011 13:46:28 +0100
Modification du code pour qu'il puisse prendre en compte nos propres exception, et dans le jeux BaseGame la poubelle n'est plus une relation a part
Diffstat:
6 files changed, 92 insertions(+), 149 deletions(-)
diff --git a/code/PtiClic/res/layout/basegame.xml b/code/PtiClic/res/layout/basegame.xml
@@ -104,22 +104,6 @@
</TextView>
</LinearLayout>
- <LinearLayout android:layout_height="wrap_content"
- android:layout_width="fill_parent" android:orientation="horizontal"
- android:id="@+id/trashLayout" android:layout_weight="1"
- android:layout_gravity="center">
-
- <ImageView android:id="@+id/trash" android:src="@android:drawable/ic_menu_delete"
- android:layout_weight="1" android:layout_height="wrap_content"
- android:layout_width="wrap_content" android:layout_gravity="center">
- </ImageView>
- <TextView android:id="@+id/trashName" android:layout_width="wrap_content"
- android:text="poubelle" android:textStyle="bold" android:textSize="15dip"
- android:layout_height="wrap_content" android:layout_weight="3"
- android:layout_gravity="center_vertical" android:visibility="gone">
- </TextView>
- </LinearLayout>
-
</LinearLayout>
</LinearLayout>
diff --git a/code/PtiClic/src/org/pticlic/games/BaseGame.java b/code/PtiClic/src/org/pticlic/games/BaseGame.java
@@ -9,7 +9,11 @@ import org.pticlic.model.Network;
import org.pticlic.model.Network.Mode;
import org.pticlic.model.Relation;
+import exception.PtiClicException;
+
import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
@@ -42,6 +46,7 @@ import android.widget.TextView;
*/
public class BaseGame extends Activity implements OnClickListener {
+ // TODO : mettre la poubelle comme categorie -1
private int currentWord = 0;
private TextView currentWordTextView;
private TextView wordRemaining;
@@ -75,19 +80,34 @@ public class BaseGame extends Activity implements OnClickListener {
@Override
protected void onStart() {
super.onStart();
+ try {
+ game = (DownloadedBaseGame)network.getGames(1);
+ runMatch();
+ start();
+ } catch (PtiClicException e) {
+ AlertDialog.Builder builder = new AlertDialog.Builder(this);
+ builder.setTitle(getString(R.string.app_name))
+ .setIcon(android.R.drawable.ic_dialog_alert)
+ .setMessage(e.getMessage())
+ .setCancelable(false)
+ .setNegativeButton("Ok", new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int id) {
+ dialog.cancel();
+ }
+ });
+ AlertDialog alert = builder.create();
+ alert.show();
+ finish();
+ }
- game = (DownloadedBaseGame)network.getGames(1);
- runMatch();
- start();
}
private void runMatch() {
- int nbrel = game.getNbRelation();
nbWord = game.getNbWord();
-
+
wordRemaining = (TextView)findViewById(R.id.wordRemaining);
wordRemaining.setText((currentWord + 1) + "/" + nbWord);
-
+
// On initialise la partie.
match = new Match();
match.setGame(game);
@@ -105,75 +125,49 @@ public class BaseGame extends Activity implements OnClickListener {
TextView rn3 = ((TextView)findViewById(R.id.relation3Name));
TextView rn4 = ((TextView)findViewById(R.id.relation4Name));
- // Layout des relations
- LinearLayout rl1 = ((LinearLayout)findViewById(R.id.relation1Layout));
- LinearLayout rl2 = ((LinearLayout)findViewById(R.id.relation2Layout));
- LinearLayout rl3 = ((LinearLayout)findViewById(R.id.relation3Layout));
- LinearLayout rl4 = ((LinearLayout)findViewById(R.id.relation4Layout));
-
// Bouton d'aide
ImageView aide = ((ImageView)findViewById(R.id.aideBaseGame));
aide.setOnClickListener(this);
Relation r = Relation.getInstance();
- ImageView trash = ((ImageView)findViewById(R.id.trash));
- trash.setOnClickListener(this);
- trash.setImageResource(android.R.drawable.ic_menu_delete);
-
// Écoute des clics sur les relations
- if (nbrel > 0) {
- // TODO : A enlever lorsque l'on aura toutes les images des relations.
- try {
- r1.setOnClickListener(this);
- rn1.setText(r.getRelationName(game.getCat1()));
- r1.setImageResource(r.getRelationImage(game.getCat1()));
- } catch (Exception e) {
- r1.setImageResource(R.drawable.icon);
- }
- } else {
- rl1.setVisibility(View.GONE);
+ // TODO : A enlever lorsque l'on aura toutes les images des relations.
+ try {
+ r1.setOnClickListener(this);
+ rn1.setText(r.getRelationName(game.getCat1()));
+ r1.setImageResource(r.getRelationImage(game.getCat1()));
+ } catch (Exception e) {
+ r1.setImageResource(R.drawable.icon);
}
- if (nbrel > 1) {
- // TODO : A enlever lorsque l'on aura toutes les images des relations.
- try {
- r2.setOnClickListener(this);
- rn2.setText(r.getRelationName(game.getCat2()));
- r2.setImageResource(r.getRelationImage(game.getCat2()));
- } catch (Exception e) {
- r2.setImageResource(R.drawable.icon);
- }
- } else {
- rl2.setVisibility(View.GONE);
+ // TODO : A enlever lorsque l'on aura toutes les images des relations.
+ try {
+ r2.setOnClickListener(this);
+ rn2.setText(r.getRelationName(game.getCat2()));
+ r2.setImageResource(r.getRelationImage(game.getCat2()));
+ } catch (Exception e) {
+ r2.setImageResource(R.drawable.icon);
}
- if (nbrel > 2) {
- // TODO : A enlever lorsque l'on aura toutes les images des relations.
- try {
- r3.setOnClickListener(this);
- rn3.setText(r.getRelationName(game.getCat3()));
- r3.setImageResource(r.getRelationImage(game.getCat3()));
- } catch (Exception e) {
- r3.setImageResource(R.drawable.icon);
- }
- } else {
- rl3.setVisibility(View.GONE);
+ // TODO : A enlever lorsque l'on aura toutes les images des relations.
+ try {
+ r3.setOnClickListener(this);
+ rn3.setText(r.getRelationName(game.getCat3()));
+ r3.setImageResource(r.getRelationImage(game.getCat3()));
+ } catch (Exception e) {
+ r3.setImageResource(R.drawable.icon);
+ }
+ // TODO : A enlever lorsque l'on aura toutes les images des relations.
+ try {
+ r4.setOnClickListener(this);
+ rn4.setText(r.getRelationName(game.getCat4()));
+ r4.setImageResource(r.getRelationImage(game.getCat4()));
+ } catch (Exception e) {
+ r4.setImageResource(R.drawable.icon);
}
- if (nbrel > 3) {
- // TODO : A enlever lorsque l'on aura toutes les images des relations.
- try {
- r4.setOnClickListener(this);
- rn4.setText(r.getRelationName(game.getCat4()));
- r4.setImageResource(r.getRelationImage(game.getCat4()));
- } catch (Exception e) {
- r4.setImageResource(R.drawable.icon);
- }
- } else {
- rl4.setVisibility(View.GONE);
- }
((TextView)findViewById(R.id.mainWord)).setText(DownloadedBaseGame.getName(game.getCentre()));
}
-
+
/* (non-Javadoc)
* @see android.app.Activity#onActivityResult(int, int, android.content.Intent)
*/
@@ -240,6 +234,7 @@ public class BaseGame extends Activity implements OnClickListener {
leaveView();
start();
} else {
+ network.sendGame(match);
Intent intent = new Intent(this, Score.class);
intent.putExtra(Constant.SCORE_GAMEPLAYED, match);
intent.putExtra(Constant.SCORE_MODE, Mode.SIMPLE_GAME);
@@ -293,13 +288,6 @@ public class BaseGame extends Activity implements OnClickListener {
relationName = ((TextView)findViewById(R.id.relation4Name));
relationName.setVisibility(View.VISIBLE);
- //trash
- relationLayout = ((LinearLayout)findViewById(R.id.trashLayout));
- relationLayout.setGravity(Gravity.LEFT);
-
- relationName = ((TextView)findViewById(R.id.trashName));
- relationName.setVisibility(View.VISIBLE);
-
// On met le mot courant au bon endroit dans la fenetre
// On recupere la largueur de l'ecran.
@@ -355,13 +343,6 @@ public class BaseGame extends Activity implements OnClickListener {
relationName = ((TextView)findViewById(R.id.relation4Name));
relationName.setVisibility(View.GONE);
- //trash
- relationLayout = ((LinearLayout)findViewById(R.id.trashLayout));
- relationLayout.setGravity(Gravity.CENTER);
-
- relationName = ((TextView)findViewById(R.id.trashName));
- relationName.setVisibility(View.GONE);
-
// On met le mot courant au bon endroit dans la fenetre
// On recupere la largueur de l'ecran.
Display display = getWindowManager().getDefaultDisplay();
@@ -393,13 +374,11 @@ public class BaseGame extends Activity implements OnClickListener {
*/
@Override
public void onClick(View v) {
- int currentWord = game.getWordInCloud(this.currentWord).getId();
switch (v.getId()) {
case (R.id.relation1) : match.add(1, currentWord); next(); break;
case (R.id.relation2) : match.add(2, currentWord); next(); break;
case (R.id.relation3) : match.add(3, currentWord); next(); break;
case (R.id.relation4) : match.add(4, currentWord); next(); break;
- case (R.id.trash) : match.add(0, currentWord); next(); break;
case (R.id.aideBaseGame) : helpMode(); break;
}
}
diff --git a/code/PtiClic/src/org/pticlic/model/DownloadedBaseGame.java b/code/PtiClic/src/org/pticlic/model/DownloadedBaseGame.java
@@ -64,30 +64,6 @@ public class DownloadedBaseGame extends DownloadedGame {
this.center = center;
this.cloud = cloud;
}
-
- /**
- * Permet de recupere le nombre de relation que l'on va utiliser.
- *
- * @return le nombre de relation
- */
- public int getNbRelation() {
- int res = 0;
-
- if (cat1 != -1) {
- res++;
- }
- if (cat2 != -1) {
- res++;
- }
- if (cat3 != -1) {
- res++;
- }
- if (cat4 != -1) {
- res++;
- }
-
- return res;
- }
public static String getName(Word word) {
return word.getName();
diff --git a/code/PtiClic/src/org/pticlic/model/Match.java b/code/PtiClic/src/org/pticlic/model/Match.java
@@ -18,7 +18,6 @@ public class Match implements Serializable {
private ArrayList<Integer> relation2;
private ArrayList<Integer> relation3;
private ArrayList<Integer> relation4;
- private ArrayList<Integer> trash;
private DownloadedGame game;
public Match() {
@@ -26,7 +25,6 @@ public class Match implements Serializable {
relation2 = new ArrayList<Integer>();
relation3 = new ArrayList<Integer>();
relation4 = new ArrayList<Integer>();
- trash = new ArrayList<Integer>();
}
public void setGame(DownloadedGame game) {
@@ -43,7 +41,6 @@ public class Match implements Serializable {
case 2: relation2.add(word); break;
case 3: relation3.add(word); break;
case 4: relation4.add(word); break;
- default: trash.add(word); break;
}
}
@@ -74,12 +71,4 @@ public class Match implements Serializable {
public ArrayList<Integer> getRelation4() {
return relation4;
}
-
- /**
- * @return the trash
- */
- public ArrayList<Integer> getTrash() {
- return trash;
- }
-
}
diff --git a/code/PtiClic/src/org/pticlic/model/Network.java b/code/PtiClic/src/org/pticlic/model/Network.java
@@ -1,7 +1,11 @@
package org.pticlic.model;
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
import java.io.IOException;
+import java.io.InputStream;
import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
import java.net.URL;
import android.content.Context;
@@ -10,6 +14,8 @@ import android.net.ConnectivityManager;
import com.google.gson.Gson;
import com.google.gson.stream.JsonReader;
+import exception.PtiClicException;
+
/**
* @author Bertrand BRUN
*
@@ -124,7 +130,7 @@ public class Network {
* @param nbGames Le nombre de parties que l'on veut récupérer.
* @return
*/
- public DownloadedGame getGames(int nbGames) {
+ public DownloadedGame getGames(int nbGames) throws PtiClicException {
switch (mode) {
case SIMPLE_GAME:
return DownloadBaseGame(nbGames);
@@ -133,18 +139,21 @@ public class Network {
}
}
- private DownloadedBaseGame DownloadBaseGame(int nbGames) {
+ private DownloadedBaseGame DownloadBaseGame(int nbGames) throws PtiClicException {
DownloadedBaseGame game = null;
+ URL url = null;
+ Gson gson = null;
+ BufferedReader reader = null;
try {
// TODO : ne restera le temps que les requete du serveur passe du GET au POST
String urlS = this.serverURL+"/pticlic.php?"
+ "action=" + Action.GET_GAMES.value()
+ "&user=" + this.id
+ "&passwd=" + this.passwd
- + "&nb=" + String.valueOf(nbGames)
+ //+ "&nb=" + String.valueOf(nbGames)
+ "&mode="+mode.value();
- URL url = new URL(urlS);
+ url = new URL(urlS);
// URLConnection connection = url.openConnection();
// connection.addRequestProperty("action", Action.GET_GAMES.value());
@@ -152,22 +161,29 @@ public class Network {
// connection.addRequestProperty("passwd", this.passwd);
// connection.addRequestProperty("nb", String.valueOf(nbGames));
// connection.addRequestProperty("mode", mode.value());
-
- Gson gson = new Gson();
+ reader = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));
+ String json = reader.readLine();
+
+ gson = new Gson();
//JsonReader reader = new JsonReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
- JsonReader reader = new JsonReader(new InputStreamReader(url.openStream(), "UTF-8"));
+ InputStream in = new ByteArrayInputStream(json.getBytes("UTF-8"));
+ JsonReader jsonReader = new JsonReader(new InputStreamReader(in));
// FIXME : Attention lorsque l'on pourra vraiment recupere plusieur partie, il faudra changer ce qui suit.
- reader.beginArray();
- while (reader.hasNext()) {
- game = makeBaseGame(reader, gson);
+ jsonReader.beginArray();
+ while (jsonReader.hasNext()) {
+ game = makeBaseGame(jsonReader, gson);
}
- reader.endArray();
- reader.close();
- } catch (IOException e) {
- e.printStackTrace();
-
- return null;
+ jsonReader.endArray();
+ jsonReader.close();
+ } catch (Exception e) {
+ try {
+ throw new PtiClicException(reader.readLine());
+ } catch (UnsupportedEncodingException e1) {
+ throw new PtiClicException(0, "Impossible de recuperer l'erreur, nous avons pris note de cette erreur");
+ } catch (IOException e1) {
+ throw new PtiClicException(0, "Impossible de recuperer l'erreur, nous avons pris note de cette erreur");
+ }
}
return game;
@@ -262,9 +278,7 @@ public class Network {
for (Integer i : game.getRelation4()) {
urlS += "&" + i + "=" + ((DownloadedBaseGame)game.getGame()).getCat4();
}
-// for (Integer i : game.getRelation4()) {
-// urlS += "&" + ((DownloadedBaseGame)game.getGame()).getCat4() + "=" + i;
-// }
+
URL url = new URL(urlS);
// URL url = new URL(this.serverURL);
diff --git a/code/PtiClic/src/org/pticlic/model/Relation.java b/code/PtiClic/src/org/pticlic/model/Relation.java
@@ -20,13 +20,14 @@ public class Relation {
private Relation() {
imageRelations = new HashMap<Integer, Integer>();
+ imageRelations.put(-1, android.R.drawable.ic_menu_delete);
imageRelations.put(5, R.drawable.synonyme);
imageRelations.put(7, R.drawable.contraire);
imageRelations.put(9, R.drawable.contenu);
imageRelations.put(10, R.drawable.contenant);
stringRelations = new HashMap<Integer, String>();
- stringRelations.put(-1, "");
+ stringRelations.put(-1, "poubelle");
stringRelations.put(0, "idée");
stringRelations.put(1, "raffinement sémantique");
stringRelations.put(2, "raffinement morphologique");