From 1bcb19a10be2640ca78c7d882d26a71b89c3b86c Mon Sep 17 00:00:00 2001 From: arinming Date: Tue, 4 Jul 2023 02:16:41 +0900 Subject: [PATCH 1/9] =?UTF-8?q?[REFACTOR]=20:=20GameApi=20=ED=8C=A8?= =?UTF-8?q?=ED=82=A4=EC=A7=80=20=EA=B5=AC=EC=A1=B0=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/deploymentTargetDropDown.xml | 4 ++-- .../java/com/example/taveconnect/GameActivity.kt | 14 ++++++++++++++ .../java/com/example/taveconnect/game/GameData.kt | 8 -------- .../com/example/taveconnect/game/GameResponse.kt | 10 ---------- .../com/example/taveconnect/game/GameService.kt | 13 ------------- 5 files changed, 16 insertions(+), 33 deletions(-) delete mode 100644 app/src/main/java/com/example/taveconnect/game/GameData.kt delete mode 100644 app/src/main/java/com/example/taveconnect/game/GameResponse.kt delete mode 100644 app/src/main/java/com/example/taveconnect/game/GameService.kt diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml index 456275a..d2b3dda 100644 --- a/.idea/deploymentTargetDropDown.xml +++ b/.idea/deploymentTargetDropDown.xml @@ -7,11 +7,11 @@ - + - + \ No newline at end of file diff --git a/app/src/main/java/com/example/taveconnect/GameActivity.kt b/app/src/main/java/com/example/taveconnect/GameActivity.kt index 30f29f7..941cd86 100644 --- a/app/src/main/java/com/example/taveconnect/GameActivity.kt +++ b/app/src/main/java/com/example/taveconnect/GameActivity.kt @@ -10,7 +10,10 @@ import android.view.View import android.widget.ImageView import android.widget.TextView import androidx.appcompat.app.AppCompatActivity +import androidx.collection.arraySetOf import com.example.taveconnect.databinding.ActivityGameBinding +import com.example.taveconnect.game.GameData +import com.example.taveconnect.retrofit.RetrofitWork import java.util.Random private var turn: Int = 0 @@ -37,6 +40,17 @@ class GameActivity : AppCompatActivity() { val view = binding.root setContentView(view) + + val gameData = GameData( + 1, + 1, + 2, + turn + ) + + val retrofitWork = RetrofitWork(gameData) + retrofitWork.work() + // 효과음 var soundId = soundPool.load(this, R.raw.hit, 1) diff --git a/app/src/main/java/com/example/taveconnect/game/GameData.kt b/app/src/main/java/com/example/taveconnect/game/GameData.kt deleted file mode 100644 index 9e1f041..0000000 --- a/app/src/main/java/com/example/taveconnect/game/GameData.kt +++ /dev/null @@ -1,8 +0,0 @@ -package com.example.taveconnect.game - -data class GameData( - val gameIdx: Int, - val list: Int, - val now: Int, - val turn: Int -) \ No newline at end of file diff --git a/app/src/main/java/com/example/taveconnect/game/GameResponse.kt b/app/src/main/java/com/example/taveconnect/game/GameResponse.kt deleted file mode 100644 index 0c368e6..0000000 --- a/app/src/main/java/com/example/taveconnect/game/GameResponse.kt +++ /dev/null @@ -1,10 +0,0 @@ -package com.example.taveconnect.game - -import com.google.gson.annotations.SerializedName - -data class GameResponse( - @SerializedName("result") - val result: String?, - @SerializedName("status") - val status: String? -) diff --git a/app/src/main/java/com/example/taveconnect/game/GameService.kt b/app/src/main/java/com/example/taveconnect/game/GameService.kt deleted file mode 100644 index 7788e38..0000000 --- a/app/src/main/java/com/example/taveconnect/game/GameService.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.example.taveconnect.game - -import retrofit2.Call -import retrofit2.http.Body -import retrofit2.http.POST - -interface GameService { - @POST("games") - fun getGame( - @Body gameInfo: GameData - ): Call -} - From 207160df452370829f0ad95af97561d2527eb783 Mon Sep 17 00:00:00 2001 From: arinming Date: Wed, 5 Jul 2023 23:26:12 +0900 Subject: [PATCH 2/9] =?UTF-8?q?[FEAT]=20:=20API=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/taveconnect/GameActivity.kt | 15 --------- .../com/example/taveconnect/HomeActivity.kt | 2 -- .../com/example/taveconnect/ListFragment.kt | 3 +- .../com/example/taveconnect/LoginActivity.kt | 26 ++++++++++++++++ .../com/example/taveconnect/MainActivity.kt | 1 + .../example/taveconnect/retrofit/ModelAPI.kt | 8 +++++ .../taveconnect/retrofit/RetrofitClient.kt | 30 ++++++++++++++++-- .../taveconnect/retrofit/RetrofitWork.kt | 31 ------------------- .../taveconnect/retrofit/RetroiftAPI.kt | 4 +++ 9 files changed, 68 insertions(+), 52 deletions(-) create mode 100644 app/src/main/java/com/example/taveconnect/retrofit/ModelAPI.kt delete mode 100644 app/src/main/java/com/example/taveconnect/retrofit/RetrofitWork.kt diff --git a/app/src/main/java/com/example/taveconnect/GameActivity.kt b/app/src/main/java/com/example/taveconnect/GameActivity.kt index 941cd86..29d73c2 100644 --- a/app/src/main/java/com/example/taveconnect/GameActivity.kt +++ b/app/src/main/java/com/example/taveconnect/GameActivity.kt @@ -10,10 +10,7 @@ import android.view.View import android.widget.ImageView import android.widget.TextView import androidx.appcompat.app.AppCompatActivity -import androidx.collection.arraySetOf import com.example.taveconnect.databinding.ActivityGameBinding -import com.example.taveconnect.game.GameData -import com.example.taveconnect.retrofit.RetrofitWork import java.util.Random private var turn: Int = 0 @@ -40,17 +37,6 @@ class GameActivity : AppCompatActivity() { val view = binding.root setContentView(view) - - val gameData = GameData( - 1, - 1, - 2, - turn - ) - - val retrofitWork = RetrofitWork(gameData) - retrofitWork.work() - // 효과음 var soundId = soundPool.load(this, R.raw.hit, 1) @@ -813,4 +799,3 @@ class GameActivity : AppCompatActivity() { } } } - diff --git a/app/src/main/java/com/example/taveconnect/HomeActivity.kt b/app/src/main/java/com/example/taveconnect/HomeActivity.kt index 6e84857..d735b83 100644 --- a/app/src/main/java/com/example/taveconnect/HomeActivity.kt +++ b/app/src/main/java/com/example/taveconnect/HomeActivity.kt @@ -4,8 +4,6 @@ import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import androidx.fragment.app.Fragment import com.example.taveconnect.databinding.ActivityHomeBinding -import com.example.taveconnect.game.GameData -import com.example.taveconnect.retrofit.RetrofitWork class HomeActivity : AppCompatActivity() { diff --git a/app/src/main/java/com/example/taveconnect/ListFragment.kt b/app/src/main/java/com/example/taveconnect/ListFragment.kt index b2faa33..0f220d1 100644 --- a/app/src/main/java/com/example/taveconnect/ListFragment.kt +++ b/app/src/main/java/com/example/taveconnect/ListFragment.kt @@ -12,7 +12,8 @@ import android.widget.Toast import androidx.fragment.app.Fragment import com.example.taveconnect.databinding.FragmentListBinding -class ListFragment : Fragment(R.layout.fragment_list) { +class +ListFragment : Fragment(R.layout.fragment_list) { private var _binding: FragmentListBinding? = null private val binding get() = _binding!! diff --git a/app/src/main/java/com/example/taveconnect/LoginActivity.kt b/app/src/main/java/com/example/taveconnect/LoginActivity.kt index 5f924c9..3fd71c2 100644 --- a/app/src/main/java/com/example/taveconnect/LoginActivity.kt +++ b/app/src/main/java/com/example/taveconnect/LoginActivity.kt @@ -6,17 +6,25 @@ import android.os.Bundle import android.os.PersistableBundle import android.util.Log import android.widget.Button +import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import com.bumptech.glide.Glide import com.example.taveconnect.R import com.kakao.sdk.user.UserApiClient import com.example.taveconnect.databinding.ActivityLoginBinding +import com.example.taveconnect.retrofit.ModelAPI +import com.example.taveconnect.retrofit.RetrofitClient +import com.example.taveconnect.retrofit.RetroiftAPI +import com.kakao.sdk.auth.Constants import okhttp3.internal.userAgent +import retrofit2.* +import retrofit2.converter.gson.GsonConverterFactory class LoginActivity : AppCompatActivity() { private lateinit var binding: ActivityLoginBinding + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -24,6 +32,21 @@ class LoginActivity : AppCompatActivity() { setContentView(binding.root) + val api = RetrofitClient.getInstance().create(RetroiftAPI::class.java) + + Log.d("API_TEST", "${api.getAPI().request()?.body?.toString()}") + + api.getAPI() + .enqueue(object: Callback { + override fun onResponse(call: Call, response: Response) { + Log.d("API", "성공 ${response.body().toString()}") + } + + override fun onFailure(call: Call, t: Throwable) { + Log.d("API", "실패 ${t.message}") + } + }) + loginInfo() //버튼 지정 @@ -31,6 +54,9 @@ class LoginActivity : AppCompatActivity() { val intent = Intent(this,HomeActivity::class.java) startActivity(intent) } + + + } diff --git a/app/src/main/java/com/example/taveconnect/MainActivity.kt b/app/src/main/java/com/example/taveconnect/MainActivity.kt index d042be9..ea4c230 100644 --- a/app/src/main/java/com/example/taveconnect/MainActivity.kt +++ b/app/src/main/java/com/example/taveconnect/MainActivity.kt @@ -6,6 +6,7 @@ import android.os.Bundle import android.util.Log import android.widget.Toast import com.example.taveconnect.databinding.ActivityMainBinding +import com.kakao.sdk.auth.Constants import com.kakao.sdk.auth.model.OAuthToken import com.kakao.sdk.common.util.Utility import com.kakao.sdk.user.UserApiClient diff --git a/app/src/main/java/com/example/taveconnect/retrofit/ModelAPI.kt b/app/src/main/java/com/example/taveconnect/retrofit/ModelAPI.kt new file mode 100644 index 0000000..60071fa --- /dev/null +++ b/app/src/main/java/com/example/taveconnect/retrofit/ModelAPI.kt @@ -0,0 +1,8 @@ +package com.example.taveconnect.retrofit + +import com.google.gson.annotations.SerializedName + +data class ModelAPI( + val body: String +) + diff --git a/app/src/main/java/com/example/taveconnect/retrofit/RetrofitClient.kt b/app/src/main/java/com/example/taveconnect/retrofit/RetrofitClient.kt index dd9431e..983d103 100644 --- a/app/src/main/java/com/example/taveconnect/retrofit/RetrofitClient.kt +++ b/app/src/main/java/com/example/taveconnect/retrofit/RetrofitClient.kt @@ -1,13 +1,15 @@ package com.example.taveconnect.retrofit -import com.example.taveconnect.game.GameService +import com.google.gson.Gson +import com.google.gson.GsonBuilder import okhttp3.OkHttpClient import okhttp3.logging.HttpLoggingInterceptor import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory +import retrofit2.create object RetrofitClient { - private const val BASE_URL = "http://cconnect.backlogs.dev/" + private const val BASE_URL = "https://cconnect.backlogs.dev" private val okHttpClient: OkHttpClient by lazy { OkHttpClient.Builder() @@ -17,6 +19,27 @@ object RetrofitClient { .build() } + var gson = GsonBuilder().setLenient().create() + + private val client = Retrofit.Builder() + .baseUrl(BASE_URL) + .addConverterFactory(GsonConverterFactory.create(gson)) + .client(okHttpClient) + .build() + + + + + + fun getInstance() : Retrofit { + return client + } + + + + + + /* private val retrofit: Retrofit by lazy { Retrofit.Builder() .baseUrl(BASE_URL) @@ -25,11 +48,12 @@ object RetrofitClient { .build() } + + val gameService: GameService by lazy { retrofit.create(GameService::class.java) } - /* private var instance: Retrofit? = null diff --git a/app/src/main/java/com/example/taveconnect/retrofit/RetrofitWork.kt b/app/src/main/java/com/example/taveconnect/retrofit/RetrofitWork.kt deleted file mode 100644 index 9139557..0000000 --- a/app/src/main/java/com/example/taveconnect/retrofit/RetrofitWork.kt +++ /dev/null @@ -1,31 +0,0 @@ -package com.example.taveconnect.retrofit - -import android.util.Log -import com.example.taveconnect.game.GameData -import com.example.taveconnect.game.GameResponse -import retrofit2.Call -import retrofit2.Response - -class RetrofitWork(private val gameInfo: GameData) { - fun work() { - val service = RetrofitClient.gameService - - service.getGame(gameInfo) - .enqueue(object : retrofit2.Callback { - override fun onResponse( - call: Call, - response: Response - ) { - if (response.isSuccessful) { - val result = response.body() - Log.d("통신 성공", "$result") - } - } - - override fun onFailure(call: Call, t: Throwable) { - Log.d("통신 실패", t.message.toString()) - } - }) - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/example/taveconnect/retrofit/RetroiftAPI.kt b/app/src/main/java/com/example/taveconnect/retrofit/RetroiftAPI.kt index fb2c0cf..77ae1b3 100644 --- a/app/src/main/java/com/example/taveconnect/retrofit/RetroiftAPI.kt +++ b/app/src/main/java/com/example/taveconnect/retrofit/RetroiftAPI.kt @@ -1,6 +1,7 @@ package com.example.taveconnect.retrofit import retrofit2.Call +import retrofit2.http.GET import retrofit2.http.POST import retrofit2.http.Query @@ -11,4 +12,7 @@ interface RetroiftAPI { @Query("turn") turn: Int, @Query("gameIdx") gameIdx: Int ): Call + + @GET("/api") + fun getAPI(): Call } \ No newline at end of file From b7f3362fef11725ca7df37363532293e887eaafd Mon Sep 17 00:00:00 2001 From: sxmvx Date: Thu, 6 Jul 2023 01:33:32 +0900 Subject: [PATCH 3/9] =?UTF-8?q?[FEAT]=20:=20=EC=9D=B4=EC=96=B4=ED=95=98?= =?UTF-8?q?=EA=B8=B0=20=EA=B8=B0=EB=B3=B8=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 액티비티 생명주기 --- .../com/example/taveconnect/BurgerActivity.kt | 21 +- .../com/example/taveconnect/GameActivity.kt | 318 ++++++++++++++---- .../com/example/taveconnect/HomeActivity.kt | 2 - .../com/example/taveconnect/ListFragment.kt | 23 +- .../com/example/taveconnect/LoadActivity.kt | 4 +- .../com/example/taveconnect/MenuFragment.kt | 14 +- .../example/taveconnect/MotionActivity.java | 1 - .../com/example/taveconnect/ReviewActivity.kt | 108 +++++- app/src/main/res/layout/activity_burger.xml | 6 +- .../main/res/layout/activity_difficulty.xml | 2 +- app/src/main/res/layout/activity_end.xml | 14 +- app/src/main/res/layout/fragment_menu.xml | 21 +- 12 files changed, 414 insertions(+), 120 deletions(-) diff --git a/app/src/main/java/com/example/taveconnect/BurgerActivity.kt b/app/src/main/java/com/example/taveconnect/BurgerActivity.kt index f845dcf..33364cd 100644 --- a/app/src/main/java/com/example/taveconnect/BurgerActivity.kt +++ b/app/src/main/java/com/example/taveconnect/BurgerActivity.kt @@ -18,14 +18,28 @@ class BurgerActivity: AppCompatActivity() { binding = ActivityBurgerBinding.inflate(layoutInflater) val view = binding.root + val gamePaused = intent.getBooleanExtra("gamePaused", false) + + val listFragment = ListFragment() + + // ListFragment에 gamePaused 값을 전달 + val bundle = Bundle() + bundle.putBoolean("gamePaused", gamePaused) + listFragment.arguments = bundle + setContentView(view) } + override fun onBackPressed() { + val intent = Intent(this, GameActivity::class.java) + intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP // 이전에 열려 있던 모든 Activity를 종료 + startActivity(intent) + finish() // BurgerActivity를 종료 + } private fun Fragment.changeFragment() { - - class ButtonClickedReceiver : BroadcastReceiver() { + /*class ButtonClickedReceiver : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { val intent2 = Intent(activity, LoadActivity::class.java) val gameActivity = activity as GameActivity @@ -44,8 +58,7 @@ class BurgerActivity: AppCompatActivity() { intent2.putExtra("col6", col6) intent2.putExtra("col7", col7) } - } - + }*/ manager.beginTransaction().replace(R.id.fv_burger, this).commit() } diff --git a/app/src/main/java/com/example/taveconnect/GameActivity.kt b/app/src/main/java/com/example/taveconnect/GameActivity.kt index 29d73c2..44e2bf0 100644 --- a/app/src/main/java/com/example/taveconnect/GameActivity.kt +++ b/app/src/main/java/com/example/taveconnect/GameActivity.kt @@ -10,24 +10,182 @@ import android.view.View import android.widget.ImageView import android.widget.TextView import androidx.appcompat.app.AppCompatActivity +import androidx.collection.arraySetOf import com.example.taveconnect.databinding.ActivityGameBinding +import com.example.taveconnect.game.GameData +import com.example.taveconnect.retrofit.RetrofitWork import java.util.Random private var turn: Int = 0 +var col1 = IntArray(6) { 0 } +var col2 = IntArray(6) { 0 } +var col3 = IntArray(6) { 0 } +var col4 = IntArray(6) { 0 } +var col5 = IntArray(6) { 0 } +var col6 = IntArray(6) { 0 } +var col7 = IntArray(6) { 0 } + class GameActivity : AppCompatActivity() { + var gamePaused = false private lateinit var binding: ActivityGameBinding // Fragment 매니저 val manager = supportFragmentManager val soundPool = SoundPool.Builder().build() - var col1 = IntArray(6) { 0 } - var col2 = IntArray(6) { 0 } - var col3 = IntArray(6) { 0 } - var col4 = IntArray(6) { 0 } - var col5 = IntArray(6) { 0 } - var col6 = IntArray(6) { 0 } - var col7 = IntArray(6) { 0 } + override fun onPause() { + super.onPause() + // 게임 액티비티가 일시 중지되는 경우에 수행할 동작을 여기에 작성 + // 예: 게임 일시 정지, 타이머 중지 등 + gamePaused = true + } + + public override fun onResume() { + super.onResume() + // 게임 액티비티가 다시 재개되는 경우에 수행할 동작을 여기에 작성 + // 예: 게임 재개, 타이머 다시 시작 등 + if (gamePaused) { + // 게임이 일시 중지된 상태에서 재개되는 경우에 수행할 동작 + + // 1열 이미지뷰 상태 복원 + for (i in 0 until col1.size) { + val coord = "iv_gm_1_" + (i + 1) + val packageName = packageName + val ivId = resources.getIdentifier(coord, "id", packageName) + val imageView = findViewById(ivId) + if (col1[i] == 1) { + imageView.setImageResource(R.drawable.ic_black) + } else if (col1[i] == 2) { + imageView.setImageResource(R.drawable.ic_white) + } else { + // 이미지뷰를 초기화해야 하는 경우 + imageView.setImageDrawable(null) + } + } + + // 1열 이미지뷰 상태 복원 + for (i in 0 until col2.size) { + val coord = "iv_gm_2_" + (i + 1) + val packageName = packageName + val ivId = resources.getIdentifier(coord, "id", packageName) + val imageView = findViewById(ivId) + if (col2[i] == 1) { + imageView.setImageResource(R.drawable.ic_black) + } else if (col2[i] == 2) { + imageView.setImageResource(R.drawable.ic_white) + } else { + // 이미지뷰를 초기화해야 하는 경우 + imageView.setImageDrawable(null) + } + } + + // 1열 이미지뷰 상태 복원 + for (i in 0 until col3.size) { + val coord = "iv_gm_3_" + (i + 1) + val packageName = packageName + val ivId = resources.getIdentifier(coord, "id", packageName) + val imageView = findViewById(ivId) + if (col3[i] == 1) { + imageView.setImageResource(R.drawable.ic_black) + } else if (col3[i] == 2) { + imageView.setImageResource(R.drawable.ic_white) + } else { + // 이미지뷰를 초기화해야 하는 경우 + imageView.setImageDrawable(null) + } + } + + // 1열 이미지뷰 상태 복원 + for (i in 0 until col4.size) { + val coord = "iv_gm_4_" + (i + 1) + val packageName = packageName + val ivId = resources.getIdentifier(coord, "id", packageName) + val imageView = findViewById(ivId) + if (col4[i] == 1) { + imageView.setImageResource(R.drawable.ic_black) + } else if (col4[i] == 2) { + imageView.setImageResource(R.drawable.ic_white) + } else { + // 이미지뷰를 초기화해야 하는 경우 + imageView.setImageDrawable(null) + } + } + + // 1열 이미지뷰 상태 복원 + for (i in 0 until col5.size) { + val coord = "iv_gm_5_" + (i + 1) + val packageName = packageName + val ivId = resources.getIdentifier(coord, "id", packageName) + val imageView = findViewById(ivId) + if (col5[i] == 1) { + imageView.setImageResource(R.drawable.ic_black) + } else if (col5[i] == 2) { + imageView.setImageResource(R.drawable.ic_white) + } else { + // 이미지뷰를 초기화해야 하는 경우 + imageView.setImageDrawable(null) + } + } + + // 1열 이미지뷰 상태 복원 + for (i in 0 until col6.size) { + val coord = "iv_gm_6_" + (i + 1) + val packageName = packageName + val ivId = resources.getIdentifier(coord, "id", packageName) + val imageView = findViewById(ivId) + if (col6[i] == 1) { + imageView.setImageResource(R.drawable.ic_black) + } else if (col6[i] == 2) { + imageView.setImageResource(R.drawable.ic_white) + } else { + // 이미지뷰를 초기화해야 하는 경우 + imageView.setImageDrawable(null) + } + } + + // 1열 이미지뷰 상태 복원 + for (i in 0 until col7.size) { + val coord = "iv_gm_7_" + (i + 1) + val packageName = packageName + val ivId = resources.getIdentifier(coord, "id", packageName) + val imageView = findViewById(ivId) + if (col7[i] == 1) { + imageView.setImageResource(R.drawable.ic_black) + } else if (col7[i] == 2) { + imageView.setImageResource(R.drawable.ic_white) + } else { + // 이미지뷰를 초기화해야 하는 경우 + imageView.setImageDrawable(null) + } + } + + // 게임의 다른 변수 및 상태 복원 + // 예: 타이머 상태, 턴 상태 등의 복원 + + // 게임을 다시 시작하기 위해 필요한 로직 실행 + // 예: 핸들러를 사용하여 흰색 돌 랜덤 위치 설정 등의 로직 실행 + + // 게임 상태 배열 복원 + col1 = c_col1.clone() + col2 = c_col2.clone() + col3 = c_col3.clone() + col4 = c_col4.clone() + col5 = c_col5.clone() + col6 = c_col6.clone() + col7 = c_col7.clone() + + gamePaused = false // 게임이 재개되었으므로 gamePaused 변수를 false로 설정 + } + } + + var index: Int = 0 + var c_col1 = IntArray(6) { 0 } + var c_col2 = IntArray(6) { 0 } + var c_col3 = IntArray(6) { 0 } + var c_col4 = IntArray(6) { 0 } + var c_col5 = IntArray(6) { 0 } + var c_col6 = IntArray(6) { 0 } + var c_col7 = IntArray(6) { 0 } val arrays = arrayOf(col1, col2, col3, col4, col5, col6, col7) @@ -37,6 +195,16 @@ class GameActivity : AppCompatActivity() { val view = binding.root setContentView(view) + val gameData = GameData( + 1, + 1, + 2, + turn + ) + + val retrofitWork = RetrofitWork(gameData) + retrofitWork.work() + // 효과음 var soundId = soundPool.load(this, R.raw.hit, 1) @@ -86,6 +254,7 @@ class GameActivity : AppCompatActivity() { while (i < col1.size) { if (col1[i] == 0 && turn == 0) { col1[i] = 1 + c_col1[i] = index i++ val coord = coo + i val packageName = packageName @@ -130,6 +299,7 @@ class GameActivity : AppCompatActivity() { while (i < col2.size) { if (col2[i] == 0 && turn == 0) { col2[i] = 1 + c_col2[i] = index i++ val coord = coo + i val packageName = packageName @@ -174,6 +344,7 @@ class GameActivity : AppCompatActivity() { while (i < col3.size) { if (col3[i] == 0 && turn == 0) { col3[i] = 1 + c_col3[i] = index i++ val coord = coo + i val packageName = packageName @@ -218,6 +389,7 @@ class GameActivity : AppCompatActivity() { while (i < col4.size) { if (col4[i] == 0 && turn == 0) { col4[i] = 1 + c_col4[i] = index i++ val coord = coo + i val packageName = packageName @@ -262,6 +434,7 @@ class GameActivity : AppCompatActivity() { while (i < col5.size) { if (col5[i] == 0 && turn == 0) { col5[i] = 1 + c_col5[i] = index i++ val coord = coo + i val packageName = packageName @@ -306,6 +479,7 @@ class GameActivity : AppCompatActivity() { while (i < col6.size) { if (col6[i] == 0 && turn == 0) { col6[i] = 1 + c_col6[i] = index i++ val coord = coo + i val packageName = packageName @@ -350,6 +524,7 @@ class GameActivity : AppCompatActivity() { while (i < col7.size) { if (col7[i] == 0 && turn == 0) { col7[i] = 1 + c_col7[i] = index i++ val coord = coo + i val packageName = packageName @@ -595,6 +770,7 @@ class GameActivity : AppCompatActivity() { val ivId = resources.getIdentifier(coord, "id", packageName) val imageView = findViewById(ivId) imageView.setImageResource(R.drawable.ic_white) + break } i++ @@ -708,29 +884,52 @@ class GameActivity : AppCompatActivity() { fun setTurn(t: Int) { val tv_turn = findViewById(R.id.tv_yourturn) - if(t == 1) - { tv_turn.text = "Opponent Turn" } - else if(t == 0) - { tv_turn.text = "Your Turn" } - else if(t==2) - { tv_turn.text = "You Win!!" + if (t == 1) { + tv_turn.text = "Opponent Turn" + index++ + } else if (t == 0) { + tv_turn.text = "Your Turn" + index++ + } else if (t == 2) { + tv_turn.text = "You Win!!" val intent = Intent(this, EndActivity::class.java) + val intent2 = Intent(this, ReviewActivity::class.java) intent.putExtra("t", turn) - startActivity(intent) + intent2.putExtra("t", turn) + intent2.putExtra("end", index) + intent2.putExtra("col1", c_col1) + intent2.putExtra("col2", c_col2) + intent2.putExtra("col3", c_col3) + intent2.putExtra("col4", c_col4) + intent2.putExtra("col5", c_col5) + intent2.putExtra("col6", c_col6) + intent2.putExtra("col7", c_col7) reset() - turn = 0 } - else if(t==3) - { tv_turn.text = "You Lost.." + turn = 0 + startActivity(intent) + } else if (t == 3) { + tv_turn.text = "You Lost.." val intent = Intent(this, EndActivity::class.java) + val intent2 = Intent(this, ReviewActivity::class.java) intent.putExtra("t", turn) - startActivity(intent) + intent2.putExtra("t", turn) + intent2.putExtra("end", index) + intent2.putExtra("col1", c_col1) + intent2.putExtra("col2", c_col2) + intent2.putExtra("col3", c_col3) + intent2.putExtra("col4", c_col4) + intent2.putExtra("col5", c_col5) + intent2.putExtra("col6", c_col6) + intent2.putExtra("col7", c_col7) reset() - turn = 0 } + turn = 0 + startActivity(intent) + } } - fun reset() { - print(arrays) + turn = 0 + index = 0 col1 = IntArray(6) { 0 } col2 = IntArray(6) { 0 } col3 = IntArray(6) { 0 } @@ -738,64 +937,39 @@ class GameActivity : AppCompatActivity() { col5 = IntArray(6) { 0 } col6 = IntArray(6) { 0 } col7 = IntArray(6) { 0 } - binding.ivGm11.setImageResource(R.drawable.nothing) - binding.ivGm12.setImageResource(R.drawable.nothing) - binding.ivGm13.setImageResource(R.drawable.nothing) - binding.ivGm14.setImageResource(R.drawable.nothing) - binding.ivGm15.setImageResource(R.drawable.nothing) - binding.ivGm16.setImageResource(R.drawable.nothing) - binding.ivGm11.setImageResource(R.drawable.nothing) - binding.ivGm12.setImageResource(R.drawable.nothing) - binding.ivGm13.setImageResource(R.drawable.nothing) - binding.ivGm14.setImageResource(R.drawable.nothing) - binding.ivGm15.setImageResource(R.drawable.nothing) - binding.ivGm16.setImageResource(R.drawable.nothing) - binding.ivGm21.setImageResource(R.drawable.nothing) - binding.ivGm22.setImageResource(R.drawable.nothing) - binding.ivGm23.setImageResource(R.drawable.nothing) - binding.ivGm24.setImageResource(R.drawable.nothing) - binding.ivGm25.setImageResource(R.drawable.nothing) - binding.ivGm26.setImageResource(R.drawable.nothing) - binding.ivGm31.setImageResource(R.drawable.nothing) - binding.ivGm32.setImageResource(R.drawable.nothing) - binding.ivGm33.setImageResource(R.drawable.nothing) - binding.ivGm34.setImageResource(R.drawable.nothing) - binding.ivGm35.setImageResource(R.drawable.nothing) - binding.ivGm36.setImageResource(R.drawable.nothing) - binding.ivGm41.setImageResource(R.drawable.nothing) - binding.ivGm42.setImageResource(R.drawable.nothing) - binding.ivGm43.setImageResource(R.drawable.nothing) - binding.ivGm44.setImageResource(R.drawable.nothing) - binding.ivGm45.setImageResource(R.drawable.nothing) - binding.ivGm46.setImageResource(R.drawable.nothing) - binding.ivGm51.setImageResource(R.drawable.nothing) - binding.ivGm52.setImageResource(R.drawable.nothing) - binding.ivGm53.setImageResource(R.drawable.nothing) - binding.ivGm54.setImageResource(R.drawable.nothing) - binding.ivGm55.setImageResource(R.drawable.nothing) - binding.ivGm56.setImageResource(R.drawable.nothing) - binding.ivGm61.setImageResource(R.drawable.nothing) - binding.ivGm62.setImageResource(R.drawable.nothing) - binding.ivGm63.setImageResource(R.drawable.nothing) - binding.ivGm64.setImageResource(R.drawable.nothing) - binding.ivGm65.setImageResource(R.drawable.nothing) - binding.ivGm66.setImageResource(R.drawable.nothing) - binding.ivGm71.setImageResource(R.drawable.nothing) - binding.ivGm72.setImageResource(R.drawable.nothing) - binding.ivGm73.setImageResource(R.drawable.nothing) - binding.ivGm74.setImageResource(R.drawable.nothing) - binding.ivGm75.setImageResource(R.drawable.nothing) - binding.ivGm76.setImageResource(R.drawable.nothing) - print(arrays) + c_col1 = IntArray(6) { 0 } + c_col2 = IntArray(6) { 0 } + c_col3 = IntArray(6) { 0 } + c_col4 = IntArray(6) { 0 } + c_col5 = IntArray(6) { 0 } + c_col6 = IntArray(6) { 0 } + c_col7 = IntArray(6) { 0 } + + val imageViews = arrayOf( + arrayOf(binding.ivGm11, binding.ivGm12, binding.ivGm13, binding.ivGm14, binding.ivGm15, binding.ivGm16), + arrayOf(binding.ivGm21, binding.ivGm22, binding.ivGm23, binding.ivGm24, binding.ivGm25, binding.ivGm26), + arrayOf(binding.ivGm31, binding.ivGm32, binding.ivGm33, binding.ivGm34, binding.ivGm35, binding.ivGm36), + arrayOf(binding.ivGm41, binding.ivGm42, binding.ivGm43, binding.ivGm44, binding.ivGm45, binding.ivGm46), + arrayOf(binding.ivGm51, binding.ivGm52, binding.ivGm53, binding.ivGm54, binding.ivGm55, binding.ivGm56), + arrayOf(binding.ivGm61, binding.ivGm62, binding.ivGm63, binding.ivGm64, binding.ivGm65, binding.ivGm66), + arrayOf(binding.ivGm71, binding.ivGm72, binding.ivGm73, binding.ivGm74, binding.ivGm75, binding.ivGm76) + ) + + for (i in imageViews.indices) { + for (j in imageViews[i].indices) { + imageViews[i][j].setImageResource(R.drawable.nothing) + } + } } - // BurgerFragment 클릭 이벤트 + // Fragment 클릭 이벤트 fun showBurger() { binding.btnBurger.setOnClickListener { val intent = Intent(this, BurgerActivity::class.java) - intent.putExtra("arrays", arrays) + //intent.putExtra("gamePaused", gamePaused) // gamePaused 변수를 Intent에 담아서 전달 startActivity(intent) } } } + diff --git a/app/src/main/java/com/example/taveconnect/HomeActivity.kt b/app/src/main/java/com/example/taveconnect/HomeActivity.kt index d735b83..f555653 100644 --- a/app/src/main/java/com/example/taveconnect/HomeActivity.kt +++ b/app/src/main/java/com/example/taveconnect/HomeActivity.kt @@ -18,8 +18,6 @@ class HomeActivity : AppCompatActivity() { val view = binding.root setContentView(view) - - showInit() initBottomNav() diff --git a/app/src/main/java/com/example/taveconnect/ListFragment.kt b/app/src/main/java/com/example/taveconnect/ListFragment.kt index 0f220d1..a0b865d 100644 --- a/app/src/main/java/com/example/taveconnect/ListFragment.kt +++ b/app/src/main/java/com/example/taveconnect/ListFragment.kt @@ -27,35 +27,28 @@ ListFragment : Fragment(R.layout.fragment_list) { return view } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + val gamePaused = arguments?.getBoolean("gamePaused") ?: false + // btnNewGame 버튼 클릭 이벤트 처리 binding.btnNewGame.setOnClickListener { - val intent = Intent(activity, DifficultyActivity::class.java) + val intent = Intent(requireActivity(), DifficultyActivity::class.java) + val gameActivity = activity as? GameActivity + gameActivity?.reset() startActivity(intent) } - // btnPreviousGame 버튼 클릭 이벤트 처리 binding.btnPrevious.setOnClickListener { - val intent = Intent(activity, ReviewActivity::class.java) + val intent = Intent(requireActivity(), ReviewActivity::class.java) startActivity(intent) } binding.btnGameIng.setOnClickListener { - val homeActivity = activity as? HomeActivity - if (homeActivity?.goMainButtonClicked == true) { - val intent = Intent(activity, LoadActivity::class.java) - Toast.makeText(context, "이전 게임을 불러옵니다.", Toast.LENGTH_SHORT).show() - startActivity(intent) - } - else { - Toast.makeText(context, "이어할 게임이 없습니다.", Toast.LENGTH_SHORT).show() - } + val intent = Intent(requireActivity(), GameActivity::class.java) + startActivity(intent) } - - } override fun onDestroyView() { diff --git a/app/src/main/java/com/example/taveconnect/LoadActivity.kt b/app/src/main/java/com/example/taveconnect/LoadActivity.kt index 3918999..4ae25e1 100644 --- a/app/src/main/java/com/example/taveconnect/LoadActivity.kt +++ b/app/src/main/java/com/example/taveconnect/LoadActivity.kt @@ -16,7 +16,7 @@ import java.util.Random private var turn: Int = 0 class LoadActivity : AppCompatActivity() { - /*private lateinit var binding: ActivityLoadBinding + private lateinit var binding: ActivityLoadBinding // Fragment 매니저 val manager = supportFragmentManager @@ -899,7 +899,7 @@ class LoadActivity : AppCompatActivity() { val intent = Intent(this, BurgerActivity::class.java) startActivity(intent) } - }*/ + } } diff --git a/app/src/main/java/com/example/taveconnect/MenuFragment.kt b/app/src/main/java/com/example/taveconnect/MenuFragment.kt index c81deb3..4b6d516 100644 --- a/app/src/main/java/com/example/taveconnect/MenuFragment.kt +++ b/app/src/main/java/com/example/taveconnect/MenuFragment.kt @@ -1,3 +1,5 @@ +package com.example.taveconnect; + import android.content.Intent import android.os.Bundle import android.view.LayoutInflater @@ -5,9 +7,6 @@ import android.view.View import android.view.ViewGroup import androidx.activity.OnBackPressedCallback import androidx.fragment.app.Fragment -import com.example.taveconnect.DifficultyActivity -import com.example.taveconnect.HomeActivity -import com.example.taveconnect.R import com.example.taveconnect.databinding.FragmentMenuBinding class MenuFragment : Fragment(R.layout.fragment_menu) { @@ -22,7 +21,8 @@ class MenuFragment : Fragment(R.layout.fragment_menu) { savedInstanceState: Bundle? ): View? { _binding = FragmentMenuBinding.inflate(inflater, container, false) - return binding.root + val view = binding.root + return view } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { @@ -36,8 +36,14 @@ class MenuFragment : Fragment(R.layout.fragment_menu) { binding.btnNewStart.setOnClickListener { val intent = Intent(activity, DifficultyActivity::class.java) + val gameActivity = activity as? GameActivity + gameActivity?.reset() startActivity(intent) } + + binding.btnBack.setOnClickListener { + activity?.finish() + } } override fun onDestroyView() { diff --git a/app/src/main/java/com/example/taveconnect/MotionActivity.java b/app/src/main/java/com/example/taveconnect/MotionActivity.java index f427141..b9c6c50 100644 --- a/app/src/main/java/com/example/taveconnect/MotionActivity.java +++ b/app/src/main/java/com/example/taveconnect/MotionActivity.java @@ -3,7 +3,6 @@ import android.content.Intent; import android.os.Bundle; import android.os.Handler; -import android.view.Window; import android.view.WindowManager; import androidx.appcompat.app.AppCompatActivity; diff --git a/app/src/main/java/com/example/taveconnect/ReviewActivity.kt b/app/src/main/java/com/example/taveconnect/ReviewActivity.kt index 9e326cb..2842a61 100644 --- a/app/src/main/java/com/example/taveconnect/ReviewActivity.kt +++ b/app/src/main/java/com/example/taveconnect/ReviewActivity.kt @@ -1,11 +1,28 @@ package com.example.taveconnect +import android.content.Intent import android.os.Bundle +import android.widget.ImageView +import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import com.example.taveconnect.databinding.ActivityReviewBinding class ReviewActivity : AppCompatActivity() { private lateinit var binding: ActivityReviewBinding + private lateinit var imageViews: List // 이미지뷰들을 저장할 리스트 변수 + + var index = 0 + + val extras: Bundle? = intent.extras + + val d_index = extras?.getInt("index", 0) + val col1 = extras?.getIntArray("col1") + val col2 = extras?.getIntArray("col2") + val col3 = extras?.getIntArray("col3") + val col4 = extras?.getIntArray("col4") + val col5 = extras?.getIntArray("col5") + val col6 = extras?.getIntArray("col6") + val col7 = extras?.getIntArray("col7") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -13,14 +30,101 @@ class ReviewActivity : AppCompatActivity() { val view = binding.root setContentView(view) + // 이미지뷰들을 초기화하고 리스트에 추가 + imageViews = listOf( + binding.ivGm11, + binding.ivGm12, + binding.ivGm13, + binding.ivGm14, + binding.ivGm15, + binding.ivGm16, + binding.ivGm21, + binding.ivGm22, + binding.ivGm23, + binding.ivGm24, + binding.ivGm25, + binding.ivGm26, + binding.ivGm31, + binding.ivGm32, + binding.ivGm33, + binding.ivGm34, + binding.ivGm35, + binding.ivGm36, + binding.ivGm41, + binding.ivGm42, + binding.ivGm43, + binding.ivGm44, + binding.ivGm45, + binding.ivGm46, + binding.ivGm51, + binding.ivGm52, + binding.ivGm53, + binding.ivGm54, + binding.ivGm55, + binding.ivGm56, + binding.ivGm61, + binding.ivGm62, + binding.ivGm63, + binding.ivGm64, + binding.ivGm65, + binding.ivGm66, + binding.ivGm71, + binding.ivGm72, + binding.ivGm73, + binding.ivGm74, + binding.ivGm75, + binding.ivGm76, + ) + + showBurger() + // 이전 복기 binding.btnBefore.setOnClickListener { - + if (index == 0) { + Toast.makeText(this, "되돌아갈 수가 없습니다.", Toast.LENGTH_SHORT).show() + } else { + index-- + updateImageView(index) // 이전 인덱스의 이미지뷰를 업데이트 + } } // 다음 복기 binding.btnNext.setOnClickListener { + if (index >= d_index!!) { + Toast.makeText(this, "더 이상 수가 없습니다.", Toast.LENGTH_SHORT).show() + } else { + index++ + updateImageView(index) // 다음 인덱스의 이미지뷰를 업데이트 + } + } + } + + // 이미지뷰 업데이트 함수 + private fun updateImageView(index: Int) { + val arrays = listOf(col1, col2, col3, col4, col5, col6, col7) + val imageIndex = index - 1 // 인덱스는 0부터 시작하므로 1을 빼줌 + + for ((i, array) in arrays.withIndex()) { + if (array != null && i < imageViews.size) { + val imageView = imageViews[i] + if (imageIndex >= 0 && imageIndex < array.size) { + // 이미지뷰의 이미지 변경 + val image = array[imageIndex] + imageView.setImageResource(image) + } else { + // 이미지뷰의 이미지를 기본 이미지로 변경 + imageView.setImageResource(R.drawable.nothing) + } + } + } + } + // BurgerFragment 클릭 이벤트 + fun showBurger() { + binding.btnBurger.setOnClickListener { + val intent = Intent(this, BurgerActivity::class.java) + startActivity(intent) } } -} \ No newline at end of file +} + diff --git a/app/src/main/res/layout/activity_burger.xml b/app/src/main/res/layout/activity_burger.xml index 5e0dbce..5ab760d 100644 --- a/app/src/main/res/layout/activity_burger.xml +++ b/app/src/main/res/layout/activity_burger.xml @@ -1,8 +1,6 @@ - @@ -13,6 +11,6 @@ android:layout_width="match_parent" android:layout_height="match_parent" tools:ignore="MissingConstraints" - tools:layout="@layout/fragment_menu" /> + tools:layout="@layout/fragment_menu" /> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_difficulty.xml b/app/src/main/res/layout/activity_difficulty.xml index e8158ab..49c697d 100644 --- a/app/src/main/res/layout/activity_difficulty.xml +++ b/app/src/main/res/layout/activity_difficulty.xml @@ -6,7 +6,7 @@ android:layout_height="match_parent" android:layout_gravity="center" android:orientation="vertical" - tools:context=".DifficultyFragment"> + tools:context=".DifficultyActivity"> + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + tools:context=".EndActivity"> + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.9" /> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_menu.xml b/app/src/main/res/layout/fragment_menu.xml index f6a79e0..01e749a 100644 --- a/app/src/main/res/layout/fragment_menu.xml +++ b/app/src/main/res/layout/fragment_menu.xml @@ -17,7 +17,8 @@ android:textSize="24sp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toTopOf="@+id/btn_new_start"/>