diff --git a/app/src/main/java/com/example/ellegadodepintia/minijuegoReparacion/MinijuegoReparacion.kt b/app/src/main/java/com/example/ellegadodepintia/minijuegoReparacion/MinijuegoReparacion.kt
index 0fcf8f43e50e546f3c64a87888b3d0ad6896f0e3..a2db6ac1566fc7b9c7454d08dcf29d0a8beff288 100644
--- a/app/src/main/java/com/example/ellegadodepintia/minijuegoReparacion/MinijuegoReparacion.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/minijuegoReparacion/MinijuegoReparacion.kt
@@ -29,6 +29,7 @@ class MinijuegoReparacion : AppCompatActivity() {
     var stop = false
     val handler = Handler()
 
+
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         soundManager = SoundManager(this)
@@ -77,15 +78,15 @@ class MinijuegoReparacion : AppCompatActivity() {
     }
 
     private fun agregarFragmentosAlRelativeLayout(relativeLayout: RelativeLayout) {
-        val mesaHeightMin = 1700
-        val mesaHeightMax = 1900
+        val mesaHeightMin = relativeToHeight(1700)
+        val mesaHeightMax = relativeToHeight(1900)
 
         for (fragmento in fragmentos) {
             val imageView = ImageView(this)
             imageView.setImageBitmap(fragmento.bitmap)
-            val params = RelativeLayout.LayoutParams(120, 120)
+            val params = RelativeLayout.LayoutParams(relativeToWidth(120), relativeToHeight(120))
 
-            params.leftMargin = Random.nextInt(250, 750)
+            params.leftMargin = Random.nextInt(relativeToWidth(250), relativeToWidth(750))
             params.topMargin = Random.nextInt(mesaHeightMin, mesaHeightMax)
             imageView.layoutParams = params
 
@@ -104,8 +105,8 @@ class MinijuegoReparacion : AppCompatActivity() {
         mostrarMartilloGolpe(relativeLayout)
         for ((index, fragmento) in fragmentos.withIndex()) {
             val imageView = relativeLayout.getChildAt(index) as? ImageView ?: continue
-            val margenIzquierdaFinal = fragmento.columna * 120 + 250
-            val margenArribaFinal = fragmento.fila * 120 + 1300
+            val margenIzquierdaFinal = fragmento.columna * relativeToWidth(120) + relativeToWidth(250)
+            val margenArribaFinal = fragmento.fila * relativeToHeight(120) + relativeToHeight(1300)
             val precisionRandom = Random.nextFloat() * 0.4f + 0.6f
             val precision = 1f - (clics * 0.20f) * precisionRandom
 
@@ -113,7 +114,7 @@ class MinijuegoReparacion : AppCompatActivity() {
             val margenArriba = fragmento.yPos + (margenArribaFinal - fragmento.yPos) * precision
             val rotacion = fragmento.rotation * (1 - precision)
 
-            val params = RelativeLayout.LayoutParams(120, 120)
+            val params = RelativeLayout.LayoutParams(relativeToWidth(120), relativeToHeight(120))
             params.leftMargin = margenIzquierda.toInt()
             params.topMargin = margenArriba.toInt()
             imageView.layoutParams = params
@@ -135,8 +136,8 @@ class MinijuegoReparacion : AppCompatActivity() {
         var para = false
         val initialX = ruleImageView.x
         val initialY = ruleImageView.y
-        val randomX = Random.nextFloat() * (1050 - 350)
-        val randomY = Random.nextFloat() * (1400 - 250)
+        val randomX = Random.nextFloat() * (relativeToWidth(1050) - relativeToWidth(350))
+        val randomY = Random.nextFloat() * (relativeToHeight(1400) - relativeToHeight(250))
         ruleImageView.x = randomX
         ruleImageView.y = randomY
         val deltaX = ruleImageView.x - initialX
@@ -237,8 +238,8 @@ class MinijuegoReparacion : AppCompatActivity() {
             nubeView.setBackgroundResource(R.drawable.effect_reparar_animation)
             val tam = Random.nextInt(150, 250)
             val params = RelativeLayout.LayoutParams(tam, tam)
-            params.leftMargin = Random.nextInt(100, 800)
-            params.topMargin = Random.nextInt(1300, 1900)
+            params.leftMargin = Random.nextInt(relativeToWidth(100), relativeToWidth(700))
+            params.topMargin = Random.nextInt(relativeToHeight(1300), relativeToHeight(1900))
             nubeView.layoutParams = params
             nubeView.rotation = Random.nextFloat()* 360
             relativeLayout.addView(nubeView)
@@ -261,8 +262,8 @@ class MinijuegoReparacion : AppCompatActivity() {
         martilloView.setImageResource(R.drawable.asi_reparar_martillo)
         val tamMartillo = Random.nextInt(300, 500)
         val params = RelativeLayout.LayoutParams(tamMartillo, tamMartillo)
-        params.leftMargin = Random.nextInt(100, 700)
-        params.topMargin = Random.nextInt(1300, 1900)
+        params.leftMargin = Random.nextInt(relativeToWidth(100), relativeToWidth(700))
+        params.topMargin = Random.nextInt(relativeToHeight(1300), relativeToHeight(1900))
         martilloView.rotation = 50f
         martilloView.layoutParams = params
         relativeLayout.addView(martilloView)
@@ -283,6 +284,16 @@ class MinijuegoReparacion : AppCompatActivity() {
         soundManager.stopSound()
         stop = true
     }
+    // Funciones auxiliares para convertir a proporciones relativas
+    private fun relativeToWidth(value: Int): Int {
+        val metrics = resources.displayMetrics
+        var screenWidth = metrics.widthPixels
+        return (value * screenWidth) / 1080
+    }
 
-
+    private fun relativeToHeight(value: Int): Int {
+        val metrics = resources.displayMetrics
+        var screenHeight = metrics.heightPixels
+        return (value * screenHeight) / 2285
+    }
 }