diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c6cbe56 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +*.iml +.gradle +/local.properties +/.idea/workspace.xml +/.idea/libraries +.DS_Store +/build +/captures diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..ac48f91 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +Fight Club \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..96cc43e --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml new file mode 100644 index 0000000..e7bedf3 --- /dev/null +++ b/.idea/copyright/profiles_settings.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..97626ba --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..508b3d9 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,23 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..559bff9 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..125dd5e --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml new file mode 100644 index 0000000..7f68460 --- /dev/null +++ b/.idea/runConfigurations.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..0605ddd --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,26 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 23 + buildToolsVersion "23.0.3" + + defaultConfig { + applicationId "com.example.denis.fightclub" + minSdkVersion 19 + targetSdkVersion 23 + versionCode 1 + versionName "1.0" + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +dependencies { + compile fileTree(dir: 'libs', include: ['*.jar']) + testCompile 'junit:junit:4.12' + compile 'com.android.support:appcompat-v7:23.2.1' +} diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..0997f02 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,17 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in D:\Androidsdk/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} diff --git a/app/src/androidTest/java/com/example/denis/fightclub/ApplicationTest.java b/app/src/androidTest/java/com/example/denis/fightclub/ApplicationTest.java new file mode 100644 index 0000000..9cdff77 --- /dev/null +++ b/app/src/androidTest/java/com/example/denis/fightclub/ApplicationTest.java @@ -0,0 +1,13 @@ +package com.example.denis.fightclub; + +import android.app.Application; +import android.test.ApplicationTestCase; + +/** + * Testing Fundamentals + */ +public class ApplicationTest extends ApplicationTestCase { + public ApplicationTest() { + super(Application.class); + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..074d7f4 --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/example/denis/fightclub/GameActivity.java b/app/src/main/java/com/example/denis/fightclub/GameActivity.java new file mode 100644 index 0000000..36cd32f --- /dev/null +++ b/app/src/main/java/com/example/denis/fightclub/GameActivity.java @@ -0,0 +1,301 @@ +package com.example.denis.fightclub; + +import android.content.Intent; +import android.content.SharedPreferences; +import android.os.SystemClock; +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.ProgressBar; +import android.widget.RadioButton; +import android.widget.ScrollView; +import android.widget.TextView; +import android.widget.Toast; + +import java.util.Objects; +import java.util.Random; + +public class GameActivity extends AppCompatActivity { + + public int dPlayer [] = new int[4]; + public int aPlayer [] = new int[4]; + + public int dEnemy [] = new int[4]; + public int aEnemy [] = new int[4]; + + public int playerHealth = 100; + public int enemyHealth = 100; + + public boolean gameEnd = false; + + private SharedPreferences session; + public static final String Game_Session = "Session"; + public static final String Player_Health = "Player"; + public static final String Enemy_Health = "Enemy"; + public static final String Is_Game_End = "End"; + + final Random random = new Random(); + + ProgressBar playerHealthBar; + ProgressBar enemyHealthBar; + TextView playerHealtText; + TextView enemyHealthText; + TextView battleLog; + Button Go; + Button menu; + Button newGame; + ScrollView logScroll; + + public String log = ""; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_game); + playerHealthBar = (ProgressBar) findViewById(R.id.playerHealthBar); + enemyHealthBar = (ProgressBar) findViewById(R.id.enemyHealthBar); + playerHealtText = (TextView) findViewById(R.id.playerHealth); + enemyHealthText = (TextView) findViewById(R.id.enemyHealth); + battleLog =(TextView) findViewById(R.id.battleLog); + menu = (Button) findViewById(R.id.Menu); + newGame = (Button) findViewById(R.id.newGame); + logScroll = (ScrollView) findViewById(R.id.scrollLog); + Go = (Button) findViewById(R.id.Start); + Go.setClickable(true); + dPlayer [0] = 1; + aPlayer [0] = 1; + session = getSharedPreferences(Game_Session,MODE_PRIVATE); + + if (MainActivity.isContinue == true) { + playerHealth = session.getInt(Player_Health,0); + enemyHealth = session.getInt(Enemy_Health,0); + playerHealthBar.setProgress(playerHealth); + playerHealtText.setText(""+playerHealth); + enemyHealthBar.setProgress(enemyHealth); + enemyHealthText.setText(""+enemyHealth); + } + } + public void gameCycle(){ + int pDamage = random.nextInt(10) + 1; + int pDef = random.nextInt(5) + 1; + int eDamage = random.nextInt(10) + 1; + int eDef = random.nextInt(5) + 1; + enemy(); + if (indexOfIntArray(aPlayer,1) == indexOfIntArray(dEnemy,1)) { + enemyHealth = enemyHealth - (pDamage - eDef); + if (pDamage > eDef){ + log = log + "\nYou deal: " + (pDamage - eDef) + " damage.";} + else {log = log +"\nEnemy dodged.";} + } else {enemyHealth = enemyHealth - pDamage; + log = log + "\nYou deal: " + (pDamage) + " damage.";} + + if (indexOfIntArray(dPlayer,1) == indexOfIntArray(aEnemy,1)) { + playerHealth = playerHealth - (eDamage - pDef); + if (eDamage > pDef){ + log = log + "\nYou got: " + (eDamage - pDef) + " damage"; + } else { log = log +"\nYou avoided enemy hit";} + } else {playerHealth = playerHealth - eDamage; + log = log + "\nYou recive: " + eDamage +" damage";} + battleLog.setText(log); + SystemClock.sleep(100); + //logScroll.fullScroll(View.FOCUS_DOWN); + logScroll.scrollTo(0,logScroll.getHeight()); + + if (playerHealth <= 0 || enemyHealth <= 0){ + end(); + } + + } + + + + public void playerRadio(View view){ + boolean checked = ((RadioButton) view).isChecked(); + + switch (view.getId()){ + case R.id.playerHead: + if (checked){ + radioSwitch("Player","Head"); + } break; + case R.id.playerArms: + if (checked){ + radioSwitch("Player","Arm"); + } break; + case R.id.playerChest: + if (checked){ + radioSwitch("Player","Chest"); + } break; + case R.id.playerLegs: + if (checked){ + radioSwitch("Player","Leg"); + } break; + } + } + + public void enemyRadio (View view){ + boolean checked = ((RadioButton) view).isChecked(); + + switch (view.getId()) { + case R.id.enemyHead: + if (checked){ + radioSwitch("Enemy","Head"); + } break; + case R.id.enemyArm: + if (checked){ + radioSwitch("Enemy","Arm"); + } break; + case R.id.enemyChest: + if (checked){ + radioSwitch("Enemy","Chest"); + } break; + case R.id.enemyLegs: + if (checked){ + radioSwitch("Enemy","Arm"); + }break; + } + } + + public void radioSwitch (String s, String b) + { + if (Objects.equals(s, "Player")){ + switch (b){ + case "Head" : + { dPlayer [0] = 1; + dPlayer [1] = 0; + dPlayer [2] = 0; + dPlayer [3] = 0; + } break; + case "Arm" :{ + dPlayer [0] = 0; + dPlayer [1] = 1; + dPlayer [2] = 0; + dPlayer [3] = 0; + } break; + case "Chest" :{ + dPlayer [0] = 0; + dPlayer [1] = 0; + dPlayer [2] = 1; + dPlayer [3] = 0; + } break; + case "Leg" :{ + dPlayer [0] = 0; + dPlayer [1] = 0; + dPlayer [2] = 0; + dPlayer [3] = 1; + } break; + } + } + + if (Objects.equals(s, "Enemy")) + { + switch (b){ + case "Head" :{ + aPlayer [0] = 1; + aPlayer [1] = 0; + aPlayer [2] = 0; + aPlayer [3] = 0; + } break; + case "Arm" :{ + aPlayer [0] = 0; + aPlayer [1] = 1; + aPlayer [2] = 0; + aPlayer [3] = 0; + } break; + case "Chest" : { + aPlayer [0] = 0; + aPlayer [1] = 0; + aPlayer [2] = 1; + aPlayer [3] = 0; + } break; + case "Leg" : { + aPlayer [0] = 0; + aPlayer [1] = 0; + aPlayer [2] = 0; + aPlayer [3] = 1; + } break; + } + } + } + + + public void buttonStart(View view) { + gameCycle(); + playerHealthBar.setProgress(playerHealth); + playerHealtText.setText(""+playerHealth); + enemyHealthBar.setProgress(enemyHealth); + enemyHealthText.setText(""+enemyHealth); + } + + public void enemy() { + for (int i = 0; i < 4; i++ ) { + dEnemy [i] = 0; + aEnemy [i] = 0; + } + int rand1 = random.nextInt(4); + int rand2 = random.nextInt(4); + dEnemy [rand1] = 1; + aEnemy [rand2] = 1; + } + + + + public static int indexOfIntArray(int[] array, int key) { + int returnvalue = -1; + for (int i = 0; i < array.length; ++i) { + if (key == array[i]) { + returnvalue = i; + break; + } + } + return returnvalue; + } + + @Override + protected void onPause() { + super.onPause(); + if (playerHealth > 0 && enemyHealth > 0) + { + SharedPreferences.Editor editor = session.edit(); + editor.putInt(Player_Health,playerHealth); + editor.putInt(Enemy_Health,enemyHealth); + editor.apply(); + gameEnd = false; + } + } + + public void end() { + if (playerHealth <= 0) { + Toast.makeText(getApplicationContext(), "You lose", Toast.LENGTH_LONG).show(); + Go.setClickable(false); + } + + if (enemyHealth <= 0) { + Toast.makeText(getApplicationContext(), "You win", Toast.LENGTH_LONG).show(); + Go.setClickable(false); + } + SharedPreferences.Editor editor = session.edit(); + battleLog.setVisibility(View.INVISIBLE); + gameEnd = true; + editor.putBoolean(Is_Game_End,gameEnd); + editor.apply(); + menu.setVisibility(View.VISIBLE); + menu.setClickable(true); + newGame.setVisibility(View.VISIBLE); + newGame.setClickable(true); + } + + public void mainMenu(View view) { + Intent intent = new Intent(GameActivity.this, MainActivity.class); + startActivity(intent); + } + + public void newGame(View view) { + Intent intent = getIntent(); + overridePendingTransition(0,0); + intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); + finish(); + overridePendingTransition(0,0); + startActivity(intent); + } +} diff --git a/app/src/main/java/com/example/denis/fightclub/MainActivity.java b/app/src/main/java/com/example/denis/fightclub/MainActivity.java new file mode 100644 index 0000000..8c4319e --- /dev/null +++ b/app/src/main/java/com/example/denis/fightclub/MainActivity.java @@ -0,0 +1,47 @@ +package com.example.denis.fightclub; + +import android.content.Intent; +import android.content.SharedPreferences; +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; +import android.view.View; +import android.widget.Button; + +/** + * Created by Denis on 06.05.2016. + */ +public class MainActivity extends AppCompatActivity { + + private SharedPreferences session; + public static final String Game_Session = "Session"; + public static final String Is_Game_End = "End"; + public static boolean isContinue; + Button gameCont; + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + gameCont = (Button) findViewById(R.id.continueGame); + gameCont.setClickable(false); + gameCont.setVisibility(View.INVISIBLE); + session = getSharedPreferences(Game_Session,MODE_PRIVATE); + if (session.getBoolean(Is_Game_End,false) == false){ + gameCont.setClickable(true); + gameCont.setVisibility(View.VISIBLE); + } + } + + + public void newGame(View view) { + isContinue = false; + Intent intent = new Intent(MainActivity.this, GameActivity.class); + startActivity(intent); + } + + + public void continueGame(View view) { + isContinue = true; + Intent intent = new Intent(MainActivity.this, GameActivity.class); + startActivity(intent); + } +} diff --git a/app/src/main/res/drawable/character.gif b/app/src/main/res/drawable/character.gif new file mode 100644 index 0000000..b2d2e13 Binary files /dev/null and b/app/src/main/res/drawable/character.gif differ diff --git a/app/src/main/res/layout/activity_game.xml b/app/src/main/res/layout/activity_game.xml new file mode 100644 index 0000000..ef67ca1 --- /dev/null +++ b/app/src/main/res/layout/activity_game.xml @@ -0,0 +1,239 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +