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/app.iml b/app/app.iml new file mode 100644 index 0000000..93902d7 --- /dev/null +++ b/app/app.iml @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..da28583 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,30 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 26 + buildToolsVersion "26.0.1" + defaultConfig { + applicationId "com.example.gupta.matchthemembers" + minSdkVersion 15 + targetSdkVersion 26 + versionCode 1 + versionName "1.0" + testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +dependencies { + compile fileTree(dir: 'libs', include: ['*.jar']) + androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { + exclude group: 'com.android.support', module: 'support-annotations' + }) + compile 'com.android.support:appcompat-v7:26.+' + compile 'com.android.support.constraint:constraint-layout:1.0.2' + testCompile 'junit:junit:4.12' +} diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..4250607 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,25 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in C:\Users\Gupta\AppData\Local\Android\Sdk/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 *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/app/src/androidTest/java/com/example/gupta/matchthemembers/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/example/gupta/matchthemembers/ExampleInstrumentedTest.java new file mode 100644 index 0000000..db53d83 --- /dev/null +++ b/app/src/androidTest/java/com/example/gupta/matchthemembers/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.example.gupta.matchthemembers; + +import android.content.Context; +import android.support.test.InstrumentationRegistry; +import android.support.test.runner.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumentation test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() throws Exception { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getTargetContext(); + + assertEquals("com.example.gupta.matchthemembers", appContext.getPackageName()); + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..d4e623f --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/example/gupta/matchthemembers/GameActivity.java b/app/src/main/java/com/example/gupta/matchthemembers/GameActivity.java new file mode 100644 index 0000000..9828dfd --- /dev/null +++ b/app/src/main/java/com/example/gupta/matchthemembers/GameActivity.java @@ -0,0 +1,198 @@ +package com.example.gupta.matchthemembers; + +import android.os.CountDownTimer; +import android.content.DialogInterface; +import android.content.Intent; +import android.provider.ContactsContract; +import android.support.v7.app.AlertDialog; +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.ImageView; +import android.widget.TextView; +import android.widget.Toast; + +import java.util.ArrayList; +import java.util.Collections; + +public class GameActivity extends AppCompatActivity implements View.OnClickListener { + + public static final String[] MEMBERS = {"Aayush Tyagi", "Abhinav Koppu", "Adhiraj Datar", "Akkshay Khoslaa", "Amy Shen", "Aneesh Jindal", "Ashwin Vaidyanathan", "Ben Goldberg", "Billy Lu", "Boris Yue", "Edward Liu", "Candice Ye", "Cody Hsieh", "Daniel Andrews", "Eliot Han", "Emaan Hariri", "Eric Kong", "Jared Gutierrez", "Jeffrey Zhang", "Jessica Chen", "Julia Luo", "Justin Kim", "Kevin Jiang", "Krishnan Rajiyah", "Kristin Ho", "Leon Kwak", "Levi Walsh", "Mohit Katyal", "Mudit Mittal", "Peter Schafhalter", "Radhika Dhomse", "Rochelle Shen", "Sahil Lamba", "Sarah Tang", "Sayan Paul", "Sharie Wang", "Shiv Kushwah", "Shreya Reddy", "Shubham Goenka", "Sumukh Shivakumar", "Tarun Khasnavis", "Victor Sun", "Vidya Ravikumar", "Wilbur Shi", "Young Lin", "Zach Govani"}; + + private class Member { + String name; + int image; + Member(String n) { + name = n; + image = getResources().getIdentifier(name.replace(" ", "").toLowerCase(), "drawable", getPackageName()); + } + } + + private class Club { + + private ArrayList allMembers; + private ArrayList availableMembers; + Member currentMember; + + Club() { + allMembers = new ArrayList<>(); + for (String name : MEMBERS) { + allMembers.add(new Member(name)); + } + generateAvailableMembers(); + } + private void generateAvailableMembers() { + availableMembers = new ArrayList<>(allMembers); + Collections.shuffle(availableMembers); + } + void nextMember() { + if (availableMembers.size() == 0) { + generateAvailableMembers(); + } + currentMember = availableMembers.remove(0); + } + + } + + int score = 0; + Club club; + + //Views + ImageView profileImage; + Button name1Button, name2Button, name3Button, name4Button, endGameButton; + TextView scoreText, timerText; + AlertDialog dialog; + CountDownTimer timer; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_game); + + //Initialize views + scoreText = (TextView) findViewById(R.id.scoreText); + timerText = (TextView) findViewById(R.id.timer); + profileImage = (ImageView) findViewById(R.id.profileImage); + name1Button = (Button) findViewById(R.id.name1Button); + name2Button = (Button) findViewById(R.id.name2Button); + name3Button = (Button) findViewById(R.id.name3Button); + name4Button = (Button) findViewById(R.id.name4Button); + endGameButton = (Button) findViewById(R.id.endGameButton); + + //Set onclick listeners + profileImage.setOnClickListener(this); + name1Button.setOnClickListener(this); + name2Button.setOnClickListener(this); + name3Button.setOnClickListener(this); + name4Button.setOnClickListener(this); + endGameButton.setOnClickListener(this); + + //Build (but not show) the AlertDialog + AlertDialog.Builder builder = new AlertDialog.Builder(GameActivity.this); + builder.setTitle(R.string.endGameTitle).setMessage(R.string.endGameMessage); + builder.setPositiveButton(R.string.endGameConfirm, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + onBackPressed(); + } + }); + builder.setNegativeButton(R.string.endGameCancel, null); + + dialog = builder.create(); + + //Create the club + club = new Club(); + club.nextMember(); + + //Show profile + showProfile(club.currentMember); + + + } + + @Override + protected void onPause() { + super.onPause(); + timer.cancel(); + } + + @Override + protected void onResume() { + super.onResume(); + showProfile(club.currentMember); + } + + private void showProfile(Member member) { + profileImage.setImageResource(member.image); + ((TextView) findViewById(R.id.scoreText)).setText(String.format(getResources().getString(R.string.scoreText), score)); + + // Build timer + if (timer != null) { + timer.cancel(); + } + timer = new CountDownTimer(5000, 1000) { + + public void onTick(long millisUntilFinished) { + timerText.setText(String.format(getResources().getString(R.string.secondsLeftText), ((millisUntilFinished / 1000) + 1))); + } + + public void onFinish() { + prepNextProfile(false, getString(R.string.timerDoneText)); + + } + }.start(); + + //Create the list of incorrect answers + ArrayList incorrectNames = new ArrayList<>(); + while (incorrectNames.size() < 3) { + int random = (int) (Math.random() * MEMBERS.length); + String possible_incorrect = MEMBERS[random]; + if (!incorrectNames.contains(possible_incorrect) && !member.name.equals(possible_incorrect)) { + incorrectNames.add(possible_incorrect); + } + } + + //Randomize buttons + ArrayList buttonTexts = new ArrayList<>(incorrectNames); + buttonTexts.add(member.name); + Collections.shuffle(buttonTexts); + name1Button.setText(buttonTexts.get(0)); + name2Button.setText(buttonTexts.get(1)); + name3Button.setText(buttonTexts.get(2)); + name4Button.setText(buttonTexts.get(3)); + + } + + public void prepNextProfile(boolean correct, String message) { + if (correct) { + score++; + } else { + Toast.makeText(this, message + getString(R.string.toastText) + club.currentMember.name, Toast.LENGTH_SHORT).show(); + } + club.nextMember(); + showProfile(club.currentMember); + } + + @Override + public void onClick(View view) { + switch (view.getId()) { + case R.id.name1Button: + case R.id.name2Button: + case R.id.name3Button: + case R.id.name4Button: + prepNextProfile(((Button) view).getText().equals(club.currentMember.name), getString(R.string.incorrectText)); + break; + case R.id.profileImage: + Intent intent = new Intent(ContactsContract.Intents.Insert.ACTION); + intent.setType(ContactsContract.RawContacts.CONTENT_TYPE); + intent.putExtra(ContactsContract.Intents.Insert.NAME, club.currentMember.name); + startActivity(intent); + break; + case R.id.endGameButton: + dialog.show(); + break; + } + + } + +} diff --git a/app/src/main/java/com/example/gupta/matchthemembers/MainActivity.java b/app/src/main/java/com/example/gupta/matchthemembers/MainActivity.java new file mode 100644 index 0000000..8c5bbe0 --- /dev/null +++ b/app/src/main/java/com/example/gupta/matchthemembers/MainActivity.java @@ -0,0 +1,28 @@ +package com.example.gupta.matchthemembers; + +import android.content.Intent; +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; +import android.view.View; +import android.widget.Button; + +public class MainActivity extends AppCompatActivity implements View.OnClickListener { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + + Button startButton = (Button)findViewById(R.id.startButton); + startButton.setOnClickListener(this); + + } + + @Override + public void onClick(View view) { + if (view.getId() == R.id.startButton) { + Intent moveToGame = new Intent(getApplicationContext(), GameActivity.class); + startActivity(moveToGame); + } + } +} diff --git a/app/src/main/res/drawable/aayushtyagi.jpg b/app/src/main/res/drawable/aayushtyagi.jpg new file mode 100755 index 0000000..20c626a Binary files /dev/null and b/app/src/main/res/drawable/aayushtyagi.jpg differ diff --git a/app/src/main/res/drawable/abhinavkoppu.jpg b/app/src/main/res/drawable/abhinavkoppu.jpg new file mode 100755 index 0000000..6bb665c Binary files /dev/null and b/app/src/main/res/drawable/abhinavkoppu.jpg differ diff --git a/app/src/main/res/drawable/adhirajdatar.png b/app/src/main/res/drawable/adhirajdatar.png new file mode 100755 index 0000000..6056a8f Binary files /dev/null and b/app/src/main/res/drawable/adhirajdatar.png differ diff --git a/app/src/main/res/drawable/akkshaykhoslaa.png b/app/src/main/res/drawable/akkshaykhoslaa.png new file mode 100755 index 0000000..a14cc33 Binary files /dev/null and b/app/src/main/res/drawable/akkshaykhoslaa.png differ diff --git a/app/src/main/res/drawable/amyshen.png b/app/src/main/res/drawable/amyshen.png new file mode 100755 index 0000000..56bafce Binary files /dev/null and b/app/src/main/res/drawable/amyshen.png differ diff --git a/app/src/main/res/drawable/aneeshjindal.jpg b/app/src/main/res/drawable/aneeshjindal.jpg new file mode 100755 index 0000000..345e24d Binary files /dev/null and b/app/src/main/res/drawable/aneeshjindal.jpg differ diff --git a/app/src/main/res/drawable/ashwinvaidyanathan.jpg b/app/src/main/res/drawable/ashwinvaidyanathan.jpg new file mode 100755 index 0000000..c27f61c Binary files /dev/null and b/app/src/main/res/drawable/ashwinvaidyanathan.jpg differ diff --git a/app/src/main/res/drawable/bengoldberg.jpg b/app/src/main/res/drawable/bengoldberg.jpg new file mode 100755 index 0000000..c87647f Binary files /dev/null and b/app/src/main/res/drawable/bengoldberg.jpg differ diff --git a/app/src/main/res/drawable/billylu.jpg b/app/src/main/res/drawable/billylu.jpg new file mode 100755 index 0000000..a03fe37 Binary files /dev/null and b/app/src/main/res/drawable/billylu.jpg differ diff --git a/app/src/main/res/drawable/borisyue.png b/app/src/main/res/drawable/borisyue.png new file mode 100755 index 0000000..b039809 Binary files /dev/null and b/app/src/main/res/drawable/borisyue.png differ diff --git a/app/src/main/res/drawable/candiceye.jpg b/app/src/main/res/drawable/candiceye.jpg new file mode 100755 index 0000000..ac1677a Binary files /dev/null and b/app/src/main/res/drawable/candiceye.jpg differ diff --git a/app/src/main/res/drawable/codyhsieh.png b/app/src/main/res/drawable/codyhsieh.png new file mode 100755 index 0000000..c380790 Binary files /dev/null and b/app/src/main/res/drawable/codyhsieh.png differ diff --git a/app/src/main/res/drawable/danielandrews.png b/app/src/main/res/drawable/danielandrews.png new file mode 100755 index 0000000..4aa149f Binary files /dev/null and b/app/src/main/res/drawable/danielandrews.png differ diff --git a/app/src/main/res/drawable/edwardliu.jpg b/app/src/main/res/drawable/edwardliu.jpg new file mode 100755 index 0000000..83de0b5 Binary files /dev/null and b/app/src/main/res/drawable/edwardliu.jpg differ diff --git a/app/src/main/res/drawable/eliothan.jpg b/app/src/main/res/drawable/eliothan.jpg new file mode 100755 index 0000000..8ec8398 Binary files /dev/null and b/app/src/main/res/drawable/eliothan.jpg differ diff --git a/app/src/main/res/drawable/emaanhariri.jpg b/app/src/main/res/drawable/emaanhariri.jpg new file mode 100755 index 0000000..d311b90 Binary files /dev/null and b/app/src/main/res/drawable/emaanhariri.jpg differ diff --git a/app/src/main/res/drawable/erickong.png b/app/src/main/res/drawable/erickong.png new file mode 100755 index 0000000..ed131ab Binary files /dev/null and b/app/src/main/res/drawable/erickong.png differ diff --git a/app/src/main/res/drawable/jaredgutierrez.jpg b/app/src/main/res/drawable/jaredgutierrez.jpg new file mode 100755 index 0000000..fc94eeb Binary files /dev/null and b/app/src/main/res/drawable/jaredgutierrez.jpg differ diff --git a/app/src/main/res/drawable/jeffreyzhang.png b/app/src/main/res/drawable/jeffreyzhang.png new file mode 100755 index 0000000..5f223ae Binary files /dev/null and b/app/src/main/res/drawable/jeffreyzhang.png differ diff --git a/app/src/main/res/drawable/jessicachen.jpg b/app/src/main/res/drawable/jessicachen.jpg new file mode 100755 index 0000000..6423e5a Binary files /dev/null and b/app/src/main/res/drawable/jessicachen.jpg differ diff --git a/app/src/main/res/drawable/julialuo.png b/app/src/main/res/drawable/julialuo.png new file mode 100755 index 0000000..6337ef0 Binary files /dev/null and b/app/src/main/res/drawable/julialuo.png differ diff --git a/app/src/main/res/drawable/justinkim.jpg b/app/src/main/res/drawable/justinkim.jpg new file mode 100755 index 0000000..23ebd77 Binary files /dev/null and b/app/src/main/res/drawable/justinkim.jpg differ diff --git a/app/src/main/res/drawable/kevinjiang.jpg b/app/src/main/res/drawable/kevinjiang.jpg new file mode 100755 index 0000000..a225fb2 Binary files /dev/null and b/app/src/main/res/drawable/kevinjiang.jpg differ diff --git a/app/src/main/res/drawable/krishnanrajiyah.jpg b/app/src/main/res/drawable/krishnanrajiyah.jpg new file mode 100755 index 0000000..85d43c4 Binary files /dev/null and b/app/src/main/res/drawable/krishnanrajiyah.jpg differ diff --git a/app/src/main/res/drawable/kristinho.jpg b/app/src/main/res/drawable/kristinho.jpg new file mode 100755 index 0000000..0427487 Binary files /dev/null and b/app/src/main/res/drawable/kristinho.jpg differ diff --git a/app/src/main/res/drawable/leonkwak.png b/app/src/main/res/drawable/leonkwak.png new file mode 100755 index 0000000..786c8b6 Binary files /dev/null and b/app/src/main/res/drawable/leonkwak.png differ diff --git a/app/src/main/res/drawable/leviwalsh.png b/app/src/main/res/drawable/leviwalsh.png new file mode 100755 index 0000000..10adff4 Binary files /dev/null and b/app/src/main/res/drawable/leviwalsh.png differ diff --git a/app/src/main/res/drawable/mohitkatyal.png b/app/src/main/res/drawable/mohitkatyal.png new file mode 100755 index 0000000..327a27d Binary files /dev/null and b/app/src/main/res/drawable/mohitkatyal.png differ diff --git a/app/src/main/res/drawable/muditmittal.jpg b/app/src/main/res/drawable/muditmittal.jpg new file mode 100755 index 0000000..c583e0b Binary files /dev/null and b/app/src/main/res/drawable/muditmittal.jpg differ diff --git a/app/src/main/res/drawable/peterschafhalter.jpg b/app/src/main/res/drawable/peterschafhalter.jpg new file mode 100755 index 0000000..0e41b58 Binary files /dev/null and b/app/src/main/res/drawable/peterschafhalter.jpg differ diff --git a/app/src/main/res/drawable/radhikadhomse.png b/app/src/main/res/drawable/radhikadhomse.png new file mode 100755 index 0000000..efaa17a Binary files /dev/null and b/app/src/main/res/drawable/radhikadhomse.png differ diff --git a/app/src/main/res/drawable/rochelleshen.png b/app/src/main/res/drawable/rochelleshen.png new file mode 100755 index 0000000..dbeb439 Binary files /dev/null and b/app/src/main/res/drawable/rochelleshen.png differ diff --git a/app/src/main/res/drawable/sahillamba.png b/app/src/main/res/drawable/sahillamba.png new file mode 100755 index 0000000..6a76b82 Binary files /dev/null and b/app/src/main/res/drawable/sahillamba.png differ diff --git a/app/src/main/res/drawable/sarahtang.png b/app/src/main/res/drawable/sarahtang.png new file mode 100755 index 0000000..0a15218 Binary files /dev/null and b/app/src/main/res/drawable/sarahtang.png differ diff --git a/app/src/main/res/drawable/sayanpaul.jpg b/app/src/main/res/drawable/sayanpaul.jpg new file mode 100755 index 0000000..32def54 Binary files /dev/null and b/app/src/main/res/drawable/sayanpaul.jpg differ diff --git a/app/src/main/res/drawable/shariewang.jpg b/app/src/main/res/drawable/shariewang.jpg new file mode 100755 index 0000000..3b0327c Binary files /dev/null and b/app/src/main/res/drawable/shariewang.jpg differ diff --git a/app/src/main/res/drawable/shivkushwah.png b/app/src/main/res/drawable/shivkushwah.png new file mode 100755 index 0000000..1716d69 Binary files /dev/null and b/app/src/main/res/drawable/shivkushwah.png differ diff --git a/app/src/main/res/drawable/shreyareddy.jpg b/app/src/main/res/drawable/shreyareddy.jpg new file mode 100755 index 0000000..2c78bb6 Binary files /dev/null and b/app/src/main/res/drawable/shreyareddy.jpg differ diff --git a/app/src/main/res/drawable/shubhamgoenka.jpg b/app/src/main/res/drawable/shubhamgoenka.jpg new file mode 100755 index 0000000..6374bef Binary files /dev/null and b/app/src/main/res/drawable/shubhamgoenka.jpg differ diff --git a/app/src/main/res/drawable/sumukhshivakumar.png b/app/src/main/res/drawable/sumukhshivakumar.png new file mode 100755 index 0000000..6a3fd32 Binary files /dev/null and b/app/src/main/res/drawable/sumukhshivakumar.png differ diff --git a/app/src/main/res/drawable/tarunkhasnavis.png b/app/src/main/res/drawable/tarunkhasnavis.png new file mode 100755 index 0000000..a822f05 Binary files /dev/null and b/app/src/main/res/drawable/tarunkhasnavis.png differ diff --git a/app/src/main/res/drawable/victorsun.jpg b/app/src/main/res/drawable/victorsun.jpg new file mode 100755 index 0000000..f1c77b8 Binary files /dev/null and b/app/src/main/res/drawable/victorsun.jpg differ diff --git a/app/src/main/res/drawable/vidyaravikumar.jpg b/app/src/main/res/drawable/vidyaravikumar.jpg new file mode 100755 index 0000000..5f07d30 Binary files /dev/null and b/app/src/main/res/drawable/vidyaravikumar.jpg differ diff --git a/app/src/main/res/drawable/wilburshi.jpg b/app/src/main/res/drawable/wilburshi.jpg new file mode 100755 index 0000000..ea96cc0 Binary files /dev/null and b/app/src/main/res/drawable/wilburshi.jpg differ diff --git a/app/src/main/res/drawable/younglin.jpg b/app/src/main/res/drawable/younglin.jpg new file mode 100755 index 0000000..828dcbd Binary files /dev/null and b/app/src/main/res/drawable/younglin.jpg differ diff --git a/app/src/main/res/drawable/zachgovani.png b/app/src/main/res/drawable/zachgovani.png new file mode 100755 index 0000000..a90a699 Binary files /dev/null and b/app/src/main/res/drawable/zachgovani.png 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..2145c30 --- /dev/null +++ b/app/src/main/res/layout/activity_game.xml @@ -0,0 +1,120 @@ + + + + + +