πŸ’» Project/Response Tester

κ°„λ‹¨ν•œ μ•ˆλ“œλ‘œμ΄λ“œ κ²Œμž„ 개발 - Response Tester [1] (첫번째 κ²Œμž„ κ΅¬ν˜„)

곡뢀λͺ»ν•¨ 2023. 10. 4. 22:17

μ—¬νƒœ μž‘μ—…ν•œ λ‚΄μš©μ€ μ•„λž˜μ™€ κ°™λ‹€.

1. μ•ˆλ“œλ‘œμ΄λ“œ μŠ€νŠœλ””μ˜€μ—μ„œ κΉƒν—ˆλΈŒμ™€ μ—°κ²°

2. ν”„λ‘œμ νŠΈ μƒμ„±ν•˜κ³  κ°„λ‹¨ν•œ μΈν„°νŽ˜μ΄μŠ€ κ΅¬ν˜„

κ²Œμž„ μ‹€ν–‰ μ‹œ λ§ˆμ£Όν•˜κ²Œ 될 메인 화면이닀. (μ΄ˆκ°„λ‹¨)

3. 첫 번째 κ²Œμž„μΈ Response Time Test μ•‘ν‹°λΉ„ν‹° 생성 및 κΈ°λ³Έ μž‘μ—…

Response Time Test λ²„νŠΌ ν„°μΉ˜ μ‹œ 이동할 화면이닀. (μ΄ˆκ°„λ‹¨2)

 

 

μž‘μ—… κ²°κ³Όλ¬Ό

 

 

 

이제 Response Time Test μ•‘ν‹°λΉ„ν‹°μ—μ„œ ν•΄μ•Ό ν•  일은 μ•„λž˜μ™€ κ°™λ‹€.

 

1. Wait for Green... 좜λ ₯ μ¦‰μ‹œ 2~5초 사이 λžœλ€ν•œ μ‹œκ°„μ— μ΄ˆλ‘μƒ‰ ν™”λ©΄ 좜λ ₯ν•˜κΈ°

2. μ΄ˆλ‘μƒ‰ ν™”λ©΄ 좜λ ₯ν•˜μžλ§ˆμž μ‹œκ°„μ„ msλ‹¨μœ„λ‘œ μ„ΈκΈ° μ‹œμž‘ν•˜μ—¬ μ‚¬μš©μžκ°€ ν„°μΉ˜ν•˜λ©΄ μ†Œμš”μ‹œκ°„ 보여주기

이외에도 할일은 λ§Žκ² μ§€λ§Œ μš°μ„  μœ„μ˜ 두 κΈ°λŠ₯λΆ€ν„° κ΅¬ν˜„ν•΄λ³΄λ € ν•œλ‹€. 

 

 

.

.

.

 

10.04 수 결과물

첫번째 κ²Œμž„μΈ λ°˜μ‘μ†λ„ ν…ŒμŠ€νŠΈλ§Œ λŒ€κ°• λ§Œλ“€μ–΄λ†“μ•˜λ‹€.

 

μ•žμœΌλ‘œ ν•΄μ•Ό ν•  일은 μ•„λž˜μ™€ κ°™λ‹€.

1. λž­ν‚Ή μ‹œμŠ€ν…œ λ„μž…

2. λ‚˜λ¨Έμ§€ κ²Œμž„ μ„Έκ°œ λͺ¨λ‘ λ§Œλ“€κΈ°

3. μΈν„°νŽ˜μ΄μŠ€ 쒀더 λ©‹μžˆκ²Œ λ§Œλ“€κΈ°

κ·ΈλŸ¬λ‚˜ 쀑간고사가 μˆ¨ν†΅μ„ μ‘°μ—¬μ˜€κ³ μžˆκΈ° λ•Œλ¬Έμ—, μ§€κΈˆ μƒνƒœλ‘œ ν”Œλ ˆμ΄μŠ€ν† μ–΄μ— 배포만 해두고 λ‚˜μ€‘μ— 천천히 μ—…λ°μ΄νŠΈ ν•  μ˜ˆμ •μ΄λ‹€.

 

μ—¬κΈ°κΉŒμ§€ κ±Έλ¦° μ‹œκ°„μ€ λŒ€κ°• 4μ‹œκ°„μ •λ„ κ±Έλ¦° λ“―

 

μ½”λ“œλŠ” μ•„λž˜μ™€ 같은데 맀우 ν˜•νŽΈμ—†μŒ

/**********************************
 * Name : ResponseTime.kt
 * Author : HaeChan Gho
 * Introduction : Page for Response Time Test.
 ********************************** */

package com.ghochobo.study

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.view.View
import android.widget.Button
import kotlinx.android.synthetic.main.activity_response_time.*
import java.util.concurrent.ThreadLocalRandom
import android.widget.TextView
import kotlin.properties.Delegates


class ResponseTime : AppCompatActivity() {
    lateinit var timerTextView: TextView
    var startTime by Delegates.notNull<Long>()
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_response_time)
        timerTextView = findViewById(R.id.timerTextView) // timerTextView μ΄ˆκΈ°ν™”
        startGame()
    }

    fun startGame() {
        val button = findViewById<Button>(R.id.touchbtn)
        val view = findViewById<View>(R.id.view)
        val waitText = findViewById<View>(R.id.waitText)
        val green = findViewById<View>(R.id.Green)
        val timerTextView = findViewById<View>(R.id.timerTextView)
        view.visibility = View.GONE
        timerTextView.visibility = View.GONE
        Green.visibility = View.GONE
        waitText.visibility = View.GONE


        button.setOnClickListener{
            // λ²„νŠΌ 클릭 μ‹œ λ²„νŠΌμ΄ 사라지고 뢉은색 ν™”λ©΄κ³Ό Wait for Green ν…μŠ€νŠΈ 보이게 함
            touchbtn.visibility = View.GONE
            view.visibility = View.VISIBLE
            waitText.visibility = View.VISIBLE
            greenTime()
        }
    }
    // 화면을 λ…Ήμƒ‰μœΌλ‘œ λ°”κΎΈλ©° μ‹œκ°„μ„ μž¬λŠ” ν•¨μˆ˜
    fun greenTime() {
        // 2~ 5초 사이 λžœλ€ν•œ μ‹œκ°„μ— ν™”λ©΄μ˜ 색상이 λ°”λ€Œκ³ 
        // 바뀐 μˆœκ°„λΆ€ν„° μ‹œκ°„μ„ μ²΄ν¬ν•˜μ—¬ μ‚¬μš©μžκ°€ ν„°μΉ˜ν•˜κΈ°κΉŒμ§€λ₯Ό 체크함
        // μ‚¬μš©μžκ°€ ν„°μΉ˜ν•˜λ©΄ ν„°μΉ˜ν•˜κΈ°κΉŒμ§€ κ±Έλ¦° μ‹œκ°„μ„ msλ‹¨μœ„λ‘œ λ‚˜νƒ€λ‚΄ 쀌
        
        

        val randtime = (2..5).random() // 1. 2초~5 사이 λžœλ€κ°’ κ°€μ Έμ˜€κΈ°
        Handler(Looper.getMainLooper()).postDelayed({ // 2. λžœλ€κ°’λ§ŒνΌ λ”œλ ˆμ΄ 건 후에 녹색 좜λ ₯
            startTime = System.currentTimeMillis() // 초둝 화면이 λ³΄μ΄λŠ” μˆœκ°„μ— startTime μ΄ˆκΈ°ν™”
            Green.visibility = View.VISIBLE
        }, (randtime.toLong() * 1000)) // λ°€λ¦¬μ΄ˆλ‹¨μœ„λ‘œ λ‚˜μ˜€κΈ°λ•Œλ¬Έμ— * 1000 ν•΄μ€Œ

        Green.setOnClickListener {
            val endTime = System.currentTimeMillis()
            val elapsedTime = endTime - startTime
            timerTextView.text = "ν„°μΉ˜κΉŒμ§€ κ±Έλ¦° μ‹œκ°„: ${elapsedTime}ms"
            Green.visibility = View.GONE
            timerTextView.visibility = View.VISIBLE
            view.visibility = View.GONE
            waitText.visibility = View.GONE
        }



        // 3. 좜λ ₯κ³Ό λ™μ‹œμ— μ‹œκ°„μ²΄ν¬ (timer ν•¨μˆ˜ λ§Œλ“€κΈ°?)

        // 4. μ‚¬μš©μžκ°€ ν„°μΉ˜μ‹œ 타이머 μ •μ§€ν•˜κ³  κ²°κ³Όλ₯Ό msλ‹¨μœ„λ‘œ λ³΄μ—¬μ€Œ

    }
}

 

LIST