¿Puedo crear juegos para Android usando Python o Pygame?

Basado en la respuesta de Joshua A Saxby, creo que aunque podrías hacer juegos no funcionarán bien en Android. Así que te sugiero que pruebes el motor de juegos 2D gratuito (love2d). Es multiplataforma, por lo que su juego funcionará en win, linux y android (posiblemente ios también). Utiliza lua para el scripting que no es muy difícil cosidering usted está familiarizado con python. Puedes desarrollar y probar tu juego en tu teléfono (por ejemplo, cuando no puedes acceder a tu PC). Sólo necesitas un editor.

  1. Primero instala LÖVE para Android - Aplicaciones en Google Play.
  2. Crea un archivo llamado 'main.lua' dentro de la carpeta 'lovegame'.
  3. Edita este archivo (yo uso el editor vim dentro de Termux), pon tu código dentro de él y ejecuta la aplicación... Tu juego está ahora en marcha.

Intenta pegar el código de abajo para probar un juego 2d de base. Yo estaba tratando de seguir este tutorial (escrito para el ordenador) y terminó haciendo un juego para android con un poco de cambio.

  1. local t_d = {} 
  2. t_d.is_inside = function (x,y,box_x,box_y) if (x >= box_x-20 and x <= box_x+20 and y >= box_y-20 and y <= box_y+20) then 
  3. return true 
  4. else return false 
  5. end end 
  6. -- local dr_btn= require("draw_button") 
  7. exit_x=50 
  8. exit_y=50 
  9. buttonl_x=050 
  10. buttonl_y=320 
  11. buttonr_x=600 
  12. buttonr_y=320 
  13. JumpButton_x = 300 
  14. JumpButton_y = 320 
  15.  
  16. platform = {} 
  17. player = {} 
  18. function love.load() 
  19. platform.height = love.graphics.getHeight()  
  20. platform.width = love.graphics.getWidth()  
  21. platform.x = 0 
  22. platform.y = platform.height / 2 + 50 
  23. player.x = love.graphics.getWidth() /2 
  24. player.y = love.graphics.getHeight() /2 + 50 
  25. player.img = love.graphics.newImage('purple.png') 
  26. player.speed = 150 
  27. player.ground = player.y 
  28. player.y_velocity = 0 
  29. player.jump_height = -300 
  30. player.gravity = -500 
  31. end 
  32. function love.update(dt) 
  33.  
  34. local touches = love.touch.getTouches() 
  35.  
  36. for i, id in ipairs(touches) do 
  37.  
  38. x, y = love.touch.getPosition(id) 
  39.  
  40. end 
  41. if (t_d.is_inside(x or 0,y or 0,exit_x,exit_y)) then 
  42. love.event.quit() 
  43. end 
  44. if (t_d.is_inside(x or 0,y or 0,buttonr_x,buttonr_y)) then 
  45. player.x = player.x < love.graphics.getWidth() -32 and player.x + player.speed * dt or player.x 
  46. end 
  47. if (t_d.is_inside(x or 0,y or 0,buttonl_x,buttonl_y)) then 
  48. player.x = player.x > 0 and (player.x - player.speed * dt) or player.x 
  49. end 
  50. if (t_d.is_inside(x or 0,y or 0,JumpButton_x,JumpButton_y)) then 
  51. player.y_velocity = player.y_velocity == 0 and player.jump_height or player.y_velocity 
  52. end 
  53. if player.y_velocity ~= 0 then 
  54. player.y = player.y + player.y_velocity * dt 
  55. player.y_velocity = player.y_velocity - player.gravity * dt 
  56. end 
  57. if player.y > player.ground then 
  58. player.y_velocity = 0 
  59. player.y = player.ground 
  60. end 
  61.  
  62. end 
  63.  
  64. function love.draw() 
  65.  
  66. love.graphics.setColor(1,1,1) 
  67. love.graphics.rectangle('fill',platform.x,platform.y,platform.width,platform.height) 
  68. love.graphics.setColor(0.5,0.5,0.5) 
  69. if ( x and y ) then 
  70. love.graphics.circle("fill", x, y, 20) 
  71. love.graphics.print(x.." "..y,0,0) 
  72. end 
  73. love.graphics.circle("fill", exit_x, exit_y, 20) 
  74. love.graphics.circle("fill", buttonl_x, buttonl_y, 20) 
  75. love.graphics.circle("fill", buttonr_x, buttonr_y, 20) 
  76. love.graphics.circle("fill", JumpButton_x, JumpButton_y, 20) 
  77. love.graphics.draw(player.img,player.x,player.y,0,1,1,0,32) 
  78.  
  79. x = nil 
  80. y = nil 
  81. end 

Just try once. You will be in love with löve.