diff --git a/app/src/main/java/net/DeltaWings/Android/Hangman/GameActivity.java b/app/src/main/java/net/DeltaWings/Android/Hangman/GameActivity.java index ad35f18..4f39e9e 100644 --- a/app/src/main/java/net/DeltaWings/Android/Hangman/GameActivity.java +++ b/app/src/main/java/net/DeltaWings/Android/Hangman/GameActivity.java @@ -1,7 +1,9 @@ package net.DeltaWings.Android.Hangman; import android.animation.ObjectAnimator; +import android.content.Context; import android.content.DialogInterface; +import android.content.Intent; import android.os.Bundle; import android.support.v7.app.ActionBar; import android.support.v7.app.AlertDialog; @@ -15,13 +17,17 @@ import android.widget.TextView; import net.DeltaWings.Android.Hangman.Util.ConnectionUtil; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Objects; public class GameActivity extends AppCompatActivity { private AlertDialog.Builder builder; private ConnectionUtil co; + private TextView textView; private List letters = new ArrayList<>(); + private Context context = this; @Override public void onBackPressed() { @@ -41,6 +47,7 @@ public class GameActivity extends AppCompatActivity { MainActivity.setTheme(this); setContentView(R.layout.game_activity); + textView = findViewById(R.id.textView2); ProgressBar progressBar = findViewById(R.id.progressBar); EditText input = findViewById(R.id.input); @@ -89,19 +96,65 @@ public class GameActivity extends AppCompatActivity { public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { EditText txt = ((EditText) v); String text = txt.getText().toString(); - if(text.length() == 1) { - log("Letter : " + text); + + + if(text.length() == 1) { //is letter if(letters.contains(text)) { log("Letter : " + text + "Already in"); } else { - log("Sending letter " + text); + log("Sending letter : \"" + text +"\""); + + //preparing datas + HashMap temp = new HashMap<>(); + temp.put("query", "letter"); + temp.put("letter", text); + co.sendData(temp); + + //get result + HashMap result = co.getDatas(); + if(Objects.equals(result.get("status"), "won")) { //check if player won + //Game Won + + DialogInterface.OnClickListener clickListener = new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + switch (which){ + case DialogInterface.BUTTON_POSITIVE: + //Close Connection + Intent intent = getIntent(); + overridePendingTransition(0, 0); + intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); + finish(); + + overridePendingTransition(0, 0); + startActivity(intent); + break; + default: + finish(); + overridePendingTransition(R.anim.fade_in, R.anim.fade_out); + break; + } + } + }; + + new AlertDialog.Builder(context) + .setMessage("You won!") + .setPositiveButton("Restart", clickListener) + .setNegativeButton("Quit", clickListener) + .show(); + } //Send Letter txt.setText("", TextView.BufferType.EDITABLE); } } else if(text.length() > 1) { log("Word : " + text); - //Send Letter + HashMap temp = new HashMap<>(); + temp.put("query", "word"); + temp.put("letter", text); + co.sendData(temp); + txt.setText("", TextView.BufferType.EDITABLE); + } return false; } @@ -114,7 +167,7 @@ public class GameActivity extends AppCompatActivity { //Return Builder - builder = new AlertDialog.Builder(this); + builder = new AlertDialog.Builder(context); builder.setMessage("Do you really want to quit your game ?") .setPositiveButton("Yes", dialogClickListener) diff --git a/app/src/main/java/net/DeltaWings/Android/Hangman/Util/ConnectionUtil.java b/app/src/main/java/net/DeltaWings/Android/Hangman/Util/ConnectionUtil.java index 34ec406..dfdb699 100644 --- a/app/src/main/java/net/DeltaWings/Android/Hangman/Util/ConnectionUtil.java +++ b/app/src/main/java/net/DeltaWings/Android/Hangman/Util/ConnectionUtil.java @@ -1,8 +1,8 @@ package net.DeltaWings.Android.Hangman.Util; -import java.util.List; import net.DeltaWings.Android.Hangman.MainActivity; -import net.DeltaWings.Android.Hangman.Util.GameUtil; + +import java.util.HashMap; public class ConnectionUtil { @@ -36,7 +36,7 @@ public class ConnectionUtil { } - public boolean sendData(List query) { + public boolean sendData(HashMap query) { if(single) return gameUtil.datasReader(query); else { //return state @@ -44,7 +44,7 @@ public class ConnectionUtil { return false; } - public Object getData() { + public HashMap getDatas() { if(single) { return gameUtil.datasSender(); } else { @@ -53,3 +53,4 @@ public class ConnectionUtil { return null; } } + diff --git a/app/src/main/java/net/DeltaWings/Android/Hangman/Util/GameUtil.java b/app/src/main/java/net/DeltaWings/Android/Hangman/Util/GameUtil.java index f502397..c12aa39 100644 --- a/app/src/main/java/net/DeltaWings/Android/Hangman/Util/GameUtil.java +++ b/app/src/main/java/net/DeltaWings/Android/Hangman/Util/GameUtil.java @@ -1,25 +1,76 @@ package net.DeltaWings.Android.Hangman.Util; +import android.util.Log; +import android.widget.Toast; + +import net.DeltaWings.Android.Hangman.MainActivity; + import java.util.ArrayList; -import java.util.List; +import java.util.HashMap; +import java.util.Objects; public class GameUtil { - private String word = null; - private List letters = new ArrayList<>(); - private List datas = new ArrayList<>(); + private String word = "example"; + private ArrayList res = new ArrayList<>(); + private ArrayList letters = new ArrayList<>(); + private HashMap returning = new HashMap<>(); + private String tag = "GameUtil"; public GameUtil() { - + //Generate Word + for (int i = 0; i < word.length(); i++) { + res.add("_"); + } + Log.v(tag, res.toString()); } - public boolean datasReader(List datas) { + public boolean datasReader(HashMap datas) { + returning.clear(); + String query = datas.get("query"); + if(Objects.equals(query, "letter")) { + Log.v(tag, "1"); + Log.v(tag, "1"); + String letter = datas.get("letter"); + if(word.contains(letter)) { + Log.v(tag, "2"); + for (int i = 0; i < word.length(); i++) { + if(Objects.equals(String.valueOf(word.charAt(i)), letter)) { + res.set(i, letter); + } + } + if(!res.contains("_")) { + //winner + returning.put("status", "won"); + } + } + returning.put("newWord", res.toString()); + } else if (Objects.equals(query, "word")) { + if(Objects.equals(datas.get("word"), word)) { + returning.put("status", "won"); + } + } + Log.v(tag, returning.toString()); + Toast.makeText(MainActivity.getInstance(), returning.get("newWord"), Toast.LENGTH_SHORT).show(); return true; } - public List datasSender() { - - return null; + public HashMap datasSender() { + return returning; } -} \ No newline at end of file +} + +/* +Trames sended to app : + status = status de la game (won, Integer of tries left, lost) + lettersUsed = String of letters used (,) + newWord = _________ + + +Trames sended from app: + word = word || letter = letter + userId = userId + username = username + ip = ip + */ \ No newline at end of file diff --git a/app/src/main/res/layout/game_activity.xml b/app/src/main/res/layout/game_activity.xml index 85277bb..98f0619 100644 --- a/app/src/main/res/layout/game_activity.xml +++ b/app/src/main/res/layout/game_activity.xml @@ -74,7 +74,6 @@ android:layout_height="wrap_content" android:fontFamily="sans-serif-condensed" android:text="________________" - android:windowSoftInputMode="adjustResize|adjustPan" android:textAlignment="center" android:textSize="36sp" android:textStyle="bold"/>