commit b38a9655e7d554aaf67dea2fb09f8a6f5ed8ae6e Author: skysamara Date: Mon Aug 29 14:12:36 2022 +0300 random shots diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..2c6d74f --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/ru/panorobot/airshot/Draw2D.kt b/app/src/main/java/ru/panorobot/airshot/Draw2D.kt new file mode 100644 index 0000000..25deff8 --- /dev/null +++ b/app/src/main/java/ru/panorobot/airshot/Draw2D.kt @@ -0,0 +1,69 @@ +//https://developer.alexanderklimov.ru/android/simplepaint.php + +package ru.panorobot.airshot + +import android.content.Context +import android.graphics.Canvas +import android.graphics.Color +import android.graphics.Paint +import android.view.View +import kotlin.random.Random + +class Draw2D(context: Context?) : View(context) { + private val paint: Paint = Paint() + private val shots:Shots = Shots() + + override fun setOnClickListener(l: OnClickListener?) { + super.setOnClickListener(l) + invalidate() + } + + override fun onDraw(canvas: Canvas?) { + super.onDraw(canvas) + val screenWidth: Int = getWidth() + val screenHeight: Int = getHeight() + + drawTarget(canvas) + shots.draw(canvas,screenWidth, screenHeight) + + } + + + private fun drawTarget(canvas: Canvas?) { + paint.apply { + style = Paint.Style.FILL // стиль Заливка + color = Color.WHITE // закрашиваем холст белым цветом + } + canvas?.drawPaint(paint) + + paint.apply { + isAntiAlias = true + color = Color.BLACK + } + + val screenWidth: Int = getWidth() + val screenHeight: Int = getHeight() + val centerX = width / 2 + val centerY = height / 2 + + var radiusSun: Int = (screenWidth + screenHeight) / 30 + canvas!!.drawCircle(centerX.toFloat(), centerY.toFloat(), radiusSun.toFloat(), paint) + + paint.apply { + style = Paint.Style.STROKE + } + var radius = radiusSun * 2 + canvas!!.drawCircle(centerX.toFloat(), centerY.toFloat(), radius.toFloat(), paint) + + radius = radiusSun * 3 + canvas!!.drawCircle(centerX.toFloat(), centerY.toFloat(), radius.toFloat(), paint) + + radius = radiusSun * 4 + canvas!!.drawCircle(centerX.toFloat(), centerY.toFloat(), radius.toFloat(), paint) + + radius = radiusSun * 5 + canvas!!.drawCircle(centerX.toFloat(), centerY.toFloat(), radius.toFloat(), paint) + } + + +} \ No newline at end of file diff --git a/app/src/main/java/ru/panorobot/airshot/MainActivity.kt b/app/src/main/java/ru/panorobot/airshot/MainActivity.kt new file mode 100644 index 0000000..3158ed9 --- /dev/null +++ b/app/src/main/java/ru/panorobot/airshot/MainActivity.kt @@ -0,0 +1,13 @@ +package ru.panorobot.airshot + +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle + +class MainActivity : AppCompatActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) +// setContentView(R.layout.activity_main) + val draw2D = Draw2D(this) + setContentView(draw2D) + } +} \ No newline at end of file diff --git a/app/src/main/java/ru/panorobot/airshot/Shot.kt b/app/src/main/java/ru/panorobot/airshot/Shot.kt new file mode 100644 index 0000000..62584ac --- /dev/null +++ b/app/src/main/java/ru/panorobot/airshot/Shot.kt @@ -0,0 +1,6 @@ +package ru.panorobot.airshot + +class Shot(x: Int = 0, y: Int = 0) { + var x = x + var y = y +} diff --git a/app/src/main/java/ru/panorobot/airshot/Shots.kt b/app/src/main/java/ru/panorobot/airshot/Shots.kt new file mode 100644 index 0000000..fae8441 --- /dev/null +++ b/app/src/main/java/ru/panorobot/airshot/Shots.kt @@ -0,0 +1,45 @@ +package ru.panorobot.airshot + +import android.graphics.Canvas +import android.graphics.Color +import android.graphics.Paint +import kotlin.random.Random + +class Shots { + private var arrayOfShots: Array = arrayOf( + Shot(50,70), + Shot(200,100), + Shot(50,50), + Shot(70,300), + Shot(10,20), + ) + + private fun randomizeShots(screenWidth: Int, screenHeight: Int){ + for (shot in arrayOfShots) { + shot.x = Random.nextInt(0, screenWidth) + shot.y = Random.nextInt(0, screenHeight) + } + } + + fun draw(canvas: Canvas?, screenWidth: Int, screenHeight: Int){ + val paint: Paint = Paint() + paint.apply { + style = Paint.Style.FILL // стиль Заливка + color = Color.WHITE // белая кайма вокруг + } + + randomizeShots(screenWidth, screenHeight) + for (shot in arrayOfShots){ + val x = shot.x + val y = shot.y + var radius: Int = (screenWidth + screenHeight) / 100 + canvas!!.drawCircle(x.toFloat(), y.toFloat(), radius.toFloat(), paint) + + paint.apply { + color = Color.BLACK // закрашиваем холст белым цветом + } + radius = (screenWidth + screenHeight) / 120 + canvas.drawCircle(x.toFloat(), y.toFloat(), radius.toFloat(), paint) + } + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..17eab17 --- /dev/null +++ b/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file