Hallo da werde ich mich mal informieren
Dankeschön
Beiträge von Vincent1
-
-
Moin ich habe eine frage zum übergeben von einem Object an eine andere Klasse kann mir da jemand weiter helfen?
Inventar ist hier eine von mir erstellte klasse die zwischen der main und dem shop hin und her geschmissen werden soll
Würde mich sehr über hilfe freuen
LG Vincent
-
Das war das was mir gefehlt hat bin wie gesagt noch Anfänger das war mir entfallen vielen dank
-
Sehr gut aufgepasst jogimuc, da findest du nix weil es nicht funktioniert hat.
Meine frage war einfach nur wie ich in der Klasse die von View abgeleitet shared preferences aufrufen kannoder vie ich den context der main da rein kriege -
Code
Alles anzeigenclass Field (context: Context,attrs: AttributeSet): View(context, attrs){ //COLORS AND STYLES private var textPaint: Paint = Paint(SYSTEM_UI_LAYOUT_FLAGS) private val spikePaint: Paint = Paint(SYSTEM_UI_LAYOUT_FLAGS) private val playerPaint: Paint = Paint(SYSTEM_UI_LAYOUT_FLAGS) private val scorePaint: Paint = Paint(SYSTEM_UI_LAYOUT_FLAGS) //ELSE private var spikes: ArrayList<Spike> = ArrayList() private var startX = 0 private var startY = 0 private val size = 80 private var player: Player = Player(size) private var gameRunning: Boolean = false private var score: Int = 0 private var spikeSize = 50f private var nextSpike: Int = 0 var goOut: Boolean = false private var oldScore: Int = 0 private var highScore: Int = 0 init { scorePaint.color = Color.BLACK scorePaint.textSize = 60f textPaint.color = Color.BLACK textPaint.textSize = 80f textPaint.textAlign = Paint.Align.CENTER playerPaint.color = Color.argb(150,0,0,255) } override fun onTouchEvent(e: MotionEvent): Boolean { when(e.action){ MotionEvent.ACTION_MOVE ->{ player.move(e.x.toInt(), e.y.toInt()) postInvalidate() } MotionEvent.ACTION_DOWN ->{ if(!gameRunning){ score = 0 } gameRunning = true } } return true } override fun onDraw(canvas: Canvas) { super.onDraw(canvas) canvas.drawColor(Color.argb(100,173, 216, 230)) if (gameRunning) { startX = width / 2 startY = height / 2 if (score == nextSpike){ spikes.add(Spike((150..500).random().toFloat(),(200..700).random().toFloat(),spikeSize)) nextSpike += 200 } if(spikes.size == 0){ spikes.add(Spike((150..500).random().toFloat(),(200..700).random().toFloat(),spikeSize)) } if((0..100).random() < 65){ score++ } canvas.drawText("Score: $score",20f,50f,scorePaint) canvas.drawRect(player.rect, playerPaint) for (i in spikes) { i.move(canvas) if (colusionDetection(i,player,this)){ gameRunning = false } if(i.isExtra) { spikePaint.color = Color.argb(200,205,20,147) }else{ spikePaint.color = Color.BLACK } canvas.drawOval(i.oval, spikePaint) if (goOut){ goOut = false break } } postInvalidate() }else{ oldScore = score resetGame(canvas) } } fun resetGame(canvas: Canvas){ canvas.drawText("Tap to Start",width/2.toFloat(),height/2-200.toFloat(),textPaint) canvas.drawText("Score : $oldScore",width/2.toFloat(),height/2.toFloat(),textPaint) canvas.drawRect(player.rect,playerPaint) player.move(width/2,height/2+200) nextSpike = 0 spikes.clear() postInvalidate() } fun extraEvent(){ spikes.clear() } }
Code
Alles anzeigenclass MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } }
Hier die beiden classen die main und die wo ich den highscore speichern und auch abrufen möchte...
-
Also in der main steht im prinzip garnix die zweite klasse die ich habe ist ein View das ich einfach in die main activity rein mache und in der will ich einen int in canvas speichern und auch im init teil abrufen...
-
Ich habe in einer eigenen View Klasse eine variable die ich gerne auf dem gerät speichern würde man soll sie also auch bei zweiten starten sehen können habe es schon mit SharedPreferences versucht leider stürtzt es hier immer ab
Hierbei crasht esprivate val main: MainActivity = MainActivity()
private var sharedPreferences: SharedPreferences = main.getSharedPreferences("highscore",Context.MODE_PRIVATE)
LG VIncent