Enzo #6

Merged
alexis.carreau merged 10 commits from Enzo into master 2 years ago

@ -1,5 +1,7 @@
# Tetris # Tetris
https://stackoverflow.com/questions/21002224/add-a-background-image-to-shape-in-xml-android
## Autheur : ## Autheur :
- Enzo Jolys - Enzo Jolys

@ -12,19 +12,10 @@
android:theme="@style/Theme.Tetris" android:theme="@style/Theme.Tetris"
tools:targetApi="31"> tools:targetApi="31">
<activity <activity
android:name=".Option" android:name="tetrisGame.activity.Menu"
android:exported="false" /> android:exported="true"/>
<activity <activity
android:name=".Menu" android:name="tetrisGame.activity.Game"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".Game"
android:exported="true"> android:exported="true">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />

@ -1,10 +0,0 @@
package modele
import android.annotation.SuppressLint
import android.content.Context
import android.graphics.Paint
import android.graphics.Path
import android.view.View
class Draw {
}

@ -1,17 +1,26 @@
package activity package tetrisGame.activity
import android.graphics.Canvas
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle import android.os.Bundle
import android.view.View
import android.widget.ImageView import android.widget.ImageView
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import but.androidstudio.tetris.R import but.androidstudio.tetris.R
import tetrisGame.views.ViewsGame
class Game : AppCompatActivity() { class Game : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setContentView(R.layout.activity_game) setContentView(R.layout.activity_game)
}
val view = findViewById<ViewsGame>(R.id.tabGame)
//Pour nettoyer la vue
view.invalidate()
}
} }

@ -1,6 +1,5 @@
package activity package tetrisGame.activity
import android.annotation.SuppressLint
import android.content.Intent import android.content.Intent
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle import android.os.Bundle
@ -18,7 +17,7 @@ class Menu : AppCompatActivity() {
val buttonStart:Button = findViewById(R.id.buttonStart) val buttonStart:Button = findViewById(R.id.buttonStart)
buttonStart.setOnClickListener { buttonStart.setOnClickListener {
val intent = Intent(this,Game::class.java) val intent = Intent(this, Game::class.java)
startActivity(intent) startActivity(intent)
} }
} }

@ -1,4 +1,4 @@
package activity package tetrisGame.activity
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle import android.os.Bundle

@ -0,0 +1,104 @@
package tetrisGame.views
import android.annotation.SuppressLint
import android.content.Context
import android.graphics.Canvas
import android.graphics.Color
import android.graphics.Paint
import android.graphics.Rect
import android.util.AttributeSet
import android.view.View
class ViewsGame(context:Context, attrs: AttributeSet?) : View(context, attrs) {
val myPaint:Paint = Paint()
override fun onDraw(canvas: Canvas) {
super.onDraw(canvas)
val tailleGrille:Float = 5F
val tailleTableauHauteur:Float = measuredHeight.toFloat()
val tailleTableauLargeur:Float = measuredWidth.toFloat()
val nbCaseLargeur:Int = 7
val nbCaseHauteur:Int = 15
// Pour remplir le tableau de zero ( a enlever)
var tableau = arrayOf<Array<Int>>()
for (i in 0 until nbCaseHauteur) {
var array = arrayOf<Int>()
for (j in 0 until nbCaseLargeur) {
array += 0
}
tableau += array
}
// Test
// Droite
tableau[0][0] = 1
tableau[1][0] = 1
tableau[2][0] = 1
tableau[3][0] = 1
// Carré
tableau[0][2] = 4
tableau[0][3] = 4
tableau[1][2] = 4
tableau[1][3] = 4
// T
tableau[0][5] = 3
tableau[1][5] = 3
tableau[1][4] = 3
tableau[1][6] = 3
// L Gauche
tableau[2][2] = 5
tableau[3][2] = 5
tableau[2][3] = 5
tableau[2][4] = 5
// L Droite
tableau[4][4] = 6
tableau[4][5] = 6
tableau[4][6] = 6
tableau[5][6] = 6
// Escalier Droite
tableau[4][3] = 2
tableau[4][2] = 2
tableau[5][2] = 2
tableau[5][1] = 2
// Escalier Gauche
tableau[6][3] = 7
tableau[6][4] = 7
tableau[7][4] = 7
tableau[7][5] = 7
myPaint.color = Color.GRAY
canvas.drawRect(0F,0F,tailleTableauLargeur,tailleTableauHauteur,myPaint)
// Color
myPaint.color = Color.BLACK
//Contour
myPaint.strokeWidth = 15F
canvas.drawLine(0F,0F,0F,tailleTableauHauteur,myPaint)
canvas.drawLine(0F,0F,tailleTableauLargeur,0F,myPaint)
canvas.drawLine(tailleTableauLargeur,0F,tailleTableauLargeur,tailleTableauHauteur,myPaint)
canvas.drawLine(0F,tailleTableauHauteur,tailleTableauLargeur,tailleTableauHauteur,myPaint)
for( ligne in 0 until nbCaseHauteur){
for ( value in 0 until nbCaseLargeur){
myPaint.color = Color.GRAY
when(tableau[ligne][value]){
1 -> myPaint.color = Color.CYAN
2 -> myPaint.color = Color.RED
3 -> myPaint.color = Color.GREEN
4 -> myPaint.color = Color.BLUE
5 -> myPaint.color = Color.WHITE
6 -> myPaint.color = Color.YELLOW
7 -> myPaint.color = Color.MAGENTA
}
canvas.drawRect((tailleTableauLargeur/nbCaseLargeur)*value+tailleGrille,
(tailleTableauHauteur/nbCaseHauteur)*ligne+tailleGrille,
(tailleTableauLargeur-((tailleTableauLargeur/nbCaseLargeur)*((nbCaseLargeur-value)-1)))-tailleGrille,
(tailleTableauHauteur-((tailleTableauHauteur/nbCaseHauteur)*((nbCaseHauteur-ligne)-1)))-tailleGrille,
myPaint)
}
}
}
}

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@color/white"/>
</shape>-->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="oval">
<solid android:color="@color/white"/>
</shape>
</item>
<item
android:drawable="@drawable/flechedroite"
android:bottom="20dp"
android:left="20dp"
android:right="20dp"
android:top="20dp"/>
</layer-list>

@ -0,0 +1,5 @@
<vector android:autoMirrored="true" android:height="24dp"
android:tint="#000000" android:viewportHeight="24"
android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M12,4l-1.41,1.41L16.17,11H4v2h12.17l-5.58,5.59L12,20l8,-8z"/>
</vector>

@ -0,0 +1,5 @@
<vector android:autoMirrored="true" android:height="24dp"
android:tint="#000000" android:viewportHeight="24"
android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M20,11H7.83l5.59,-5.59L12,4l-8,8 8,8 1.41,-1.41L7.83,13H20v-2z"/>
</vector>

@ -0,0 +1,5 @@
<vector android:autoMirrored="true" android:height="24dp"
android:tint="#000000" android:viewportHeight="24"
android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M15.55,5.55L11,1v3.07C7.06,4.56 4,7.92 4,12s3.05,7.44 7,7.93v-2.02c-2.84,-0.48 -5,-2.94 -5,-5.91s2.16,-5.43 5,-5.91L11,10l4.55,-4.45zM19.93,11c-0.17,-1.39 -0.72,-2.73 -1.62,-3.89l-1.42,1.42c0.54,0.75 0.88,1.6 1.02,2.47h2.02zM13,17.9v2.02c1.39,-0.17 2.74,-0.71 3.9,-1.61l-1.44,-1.44c-0.75,0.54 -1.59,0.89 -2.46,1.03zM16.89,15.48l1.42,1.41c0.9,-1.16 1.45,-2.5 1.62,-3.89h-2.02c-0.14,0.87 -0.48,1.72 -1.02,2.48z"/>
</vector>

@ -0,0 +1,5 @@
<vector android:autoMirrored="true" android:height="24dp"
android:tint="#000000" android:viewportHeight="24"
android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M7.11,8.53L5.7,7.11C4.8,8.27 4.24,9.61 4.07,11h2.02c0.14,-0.87 0.49,-1.72 1.02,-2.47zM6.09,13L4.07,13c0.17,1.39 0.72,2.73 1.62,3.89l1.41,-1.42c-0.52,-0.75 -0.87,-1.59 -1.01,-2.47zM7.1,18.32c1.16,0.9 2.51,1.44 3.9,1.61L11,17.9c-0.87,-0.15 -1.71,-0.49 -2.46,-1.03L7.1,18.32zM13,4.07L13,1L8.45,5.55 13,10L13,6.09c2.84,0.48 5,2.94 5,5.91s-2.16,5.43 -5,5.91v2.02c3.95,-0.49 7,-3.85 7,-7.93s-3.05,-7.44 -7,-7.93z"/>
</vector>

@ -1,34 +1,75 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto" tools:context="tetrisGame.activity.Game"
tools:context="activity.Game" android:background="@color/white">
>
<LinearLayout
<GridLayout android:layout_width="match_parent"
android:layout_width="wrap_content" android:layout_height="match_parent"
android:layout_height="wrap_content" android:orientation="vertical"
android:columnCount="10" android:layout_marginLeft="15dp"
android:rowCount="20" android:layout_marginTop="15dp"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginRight="15dp">
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" <FrameLayout
app:layout_constraintBottom_toBottomOf="parent"> android:layout_width="250dp"
android:layout_height="450dp">
<TextView
android:id="@+id/tilePageGame" <tetrisGame.views.ViewsGame
android:layout_width="wrap_content" android:id="@+id/tabGame"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</FrameLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="TextView" android:orientation="horizontal"
android:layout_row="0" android:layout_marginTop="50dp">
android:layout_column="0"
android:layout_gravity="center" <Button
android:layout_marginTop="2mm" android:id="@+id/Button_Left"
/> android:layout_width="100dp"
android:layout_height="100dp"
android:background="@drawable/flechegauche"
android:layout_marginStart="15dp"/>
<Button
android:id="@+id/Button_Right"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@drawable/flechedroite"
android:layout_marginStart="150dp"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_marginTop="15dp">
<Button
android:id="@+id/Button_Left_Rotation"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@drawable/rotationgauche"
android:layout_marginStart="50dp"/>
<Button
android:id="@+id/Button_Right_Rotation"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@drawable/rotationdroite"
android:layout_marginStart="75dp"/>
</LinearLayout>
</LinearLayout>
</GridLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
tools:context="activity.Menu"> tools:context="tetrisGame.activity.Menu">
<LinearLayout <LinearLayout
android:layout_width="wrap_content" android:layout_width="wrap_content"

@ -4,6 +4,6 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
tools:context="activity.Option"> tools:context="tetrisGame.activity.Option">
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

@ -4,11 +4,11 @@
<!-- Primary brand color. --> <!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_200</item> <item name="colorPrimary">@color/purple_200</item>
<item name="colorPrimaryVariant">@color/purple_700</item> <item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/black</item> <item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. --> <!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item> <item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_200</item> <item name="colorSecondaryVariant">@color/teal_200</item>
<item name="colorOnSecondary">@color/black</item> <item name="colorOnSecondary">@color/white</item>
<!-- Status bar color. --> <!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="21">?attr/colorPrimaryVariant</item> <item name="android:statusBarColor" tools:targetApi="21">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. --> <!-- Customize your theme here. -->

@ -1,3 +1,4 @@
<resources> <resources>
<string name="app_name">Tetris</string> <string name="app_name">Tetris</string>
<string name="TextScore">Score : ??</string>
</resources> </resources>
Loading…
Cancel
Save