CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[lua] Prob affichage et IA

Tokko
Tokko
Niveau 9
01 juin 2008 à 20:16:19

Salut !

Voilà je suis en train de coder un jeu de Shoot'em up sur PSP en Lua, seulement j'ai quelques problèmes.

Le premier est au démarrage du jeu, comme pour jouer il faut tenir la console verticalement, j'ai afficher une image avec un message qui dit comment il faut tenir la console. Et je voudrais qu'elle reste affichée pendant un laps de temps avant de disparaitre et qu'on arrive sur le menu principale du jeu. J'ai donc utilisé un timer, seulement la boucle tourne en infini entre ces 2 images :(

Le code :d)
minuteur:start()
temps = minuteur:time()
if temps > 4 then
minuteur:stop()
minuteur:reset()
screen:blit(0,0,menu)
end

Le second problème est que quand j'appuye sur la touche R c'est sencer tirer un laser qui traverse l'écran, seulement celui-ci reste figé à sa position où il apparait et n'avance pas !!!

Le code :d)
if pad:r() then
tir = 1
end
if tir == 1 then
screen:blit(positionX - 10, positionY - 5,beam1)
PositionLasers.x = PositionLasers.x + 4
local sound = beam1S
voice = sound:play()
end
if PositionLasers.x == 100 then
PositionLasers.x = 0
tir = 0
end

Le dernier problème est que j'ai créer une IA(tout à fait basique) qui fait se déplacer l'adversaire. Seulement depuis que je l'ai faite le jeu freeze à l'écran titre.

Le code de l'IA :d)
ennemi = Image.load("images/vaisseau2.png")

function deplacement()
positionYe = 110
positionXe = 300
positionXe=positionXe+math.random(0,399)
positionYe=positionYe+math.random(0,272)
screen:blit(positionXe, positionYe, ennemi)
end

-- boucle principale
while true do
deplacement()
end

Et je l'appelle dans la boucle principale d'un autre code qui gère les déplacements, etc... :d)
dofile("IA.lua")

Sa serait vraiment sympa de m'aider parce que ça fait quelques jours que je galère là dessus sans trouver la solution !!

:merci: d'avance

final-hearts
final-hearts
Niveau 10
01 juin 2008 à 21:10:30

Pour le dernier problème :

Es-tu sûr que c'est vraiment un freeze ?
Non parce que les valeurs aléatoire sur le déplacement son trop élevée je trouve.
J'ai étudié un peu le lua orienté psp mais cela fait un peu longtemps ( plus d'un an).

Vérifie aussi si tu avais bel et bien mis l'image dans le dossier "images" et que celui-ci soit exactement nommé de la même manière que celle dont il est écrit, car même une simple majuscule peut tout péter^^

De plus, les déplacements de l'IA ne vont que dans un sens et tu ne la verras mm pas si tes valeurs aléatoires
restent si élevées.

final-hearts
final-hearts
Niveau 10
01 juin 2008 à 21:29:00

Pour le premier cas, je ne saurais pas trop te dire,J'avais même pas utilisé les timers en lua, il faut aussi dire que j'avais pas étudié sur un site où ils donnent de très bon conseils.

Pour le deuxième,il faudrait le contexte, mais je crois que ça vient du fait que tu ne blittes pas avec positionLasers mais avec mais avec position tout court.

PS : Je dévellope moi même un homebrew psp en c++ en ce moment, si tu veux l'essayer, le voici : http://www.megaupload.com/fr/?d=9X8TQBNO

Burnout3
Burnout3
Niveau 10
03 juin 2008 à 19:14:02

Ok merci je vais essayer :) Pour le freeze je suis sur que sa freeze, quand j'appuye sur une touche y'a plus moyen de faire quoi que se soit sur l'écran, obliger de quitter le jeu.

Si tu veux qu'on en discute un peu plus donne moi ton msn :)

TATOFOREVER
TATOFOREVER
Niveau 8
05 juin 2008 à 15:43:07

Salut Burnout3 ou Tokko?, peu importe, la personne qui a starté le topic. Je ne connais pas LUA mais l'idee dans un langage OO est toujours la meme.
Conseil. Pourquoi tu ne fais pas ton AI dans une Classe?
ensuite tu te cree un petit array pour chaque niveau qui va contenir tous les objets ( enemys ). Je ne sais pas si Lua supporte un array d'objets mais bon. L'idée est de tout encapsuler pour te faciliter la tache ensuite. Qu'est-ce qui se passe si tu veux avoir plus d'un enemy dans ton petit jeu? Ca serait plus clean et plus facile pour toi de gerer ton code quand il va commencer a grossir.
Ton code pour le AI devrait resembler a ca:

Class Enemy:
int _energy;
int _life;
float _posX;
float _posY;
ennemi = Image.load("images/vaisseau2.png")

function deplacement()
posY = 110
posX = 300
posX = posX + math.random(0,399)
posY = posY + math.random(0,272)
screen:blit(posX, posY, ennemi)
end

Ensuite tu fais le nombre de fois que tu veux Enemy et le nom de ton entite et tu viens de spawmer un nouvel objet de type Enemy^^.
D'autre pars, cette classe la est tres tres basique, elle pourrait meme servire de classe de base pour tes enemys ou tout objet qui a une vraisemblemnce. Pour les positions et deplacements je te sugere d'utilicer des vecteurs et matrices. Surtout les matrices, mais bon reste a voir si tu connais ce gerne de maths. Si ce n'est pas le cas alors reste avec ta posX et posY. Tu devrais rechercher des tuts sur les vecteurs, tu vas voir que ca va t'etre super util plus tard pour ton AI ;)
Bonne chance et je dois aller travailer
@+

final-hearts
final-hearts
Niveau 10
05 juin 2008 à 16:24:29

le lua est un peu comme un C mais en un peu plus limité,mais interprété, donc il n'y a pas de classe, mais il y a tout de même des structures ^^

TATOFOREVER
TATOFOREVER
Niveau 8
06 juin 2008 à 05:31:23

Avec lua, tu peux implementer namespaces, classes, des tables, arrays, des listes et plein d'autres. Les fameuses tables de lua sont utilicés comme des structures, c'est l'equivalent en fait.

guyver2
guyver2
Niveau 10
06 juin 2008 à 13:41:11

tout a fait d'accord avec TATOFOREVER, dans les tables lua tu peux meme mettre des fonctions. On arrive presque (il manque quand meme pas mal de truc) a de l'OO.

Par contre pour l'IA, et là Dnob700 sera d'accord, c'est mieu de la programmation fonctionnelle que OO. Et comme par hasard, le lua gere aussi la programmation fonctionnelle. Quel merveilleux langage.
Si la prog lua sur psp t'interesse, je te conseil d'aller faire un tour sur le site XtreamLua qui est hors ligne pour le moment pour MAJ mais qui revient le 11 juin normalement.

Burnout3
Burnout3
Niveau 10
07 juin 2008 à 18:58:05

Merci ^^ J'ai régler tout les problèmes sauf celui du laser qui n'avance toujours pas sa m'énerve :(

TATOFOREVER
TATOFOREVER
Niveau 8
10 juin 2008 à 16:51:16

Burnout3,
pour avancer ton lazer tu apliques le meme principe que celui pour avancer ton perso ou tes AI.

Burnout3
Burnout3
Niveau 10
11 juin 2008 à 14:23:06

C'est se que j'ai fais mais sa fonctionne pas XD

Atomic_Sushi
Atomic_Sushi
Niveau 10
11 juin 2008 à 17:01:54

Sinon, essaye ça pour ton premier problème, je ne sais pas si c'est possible sur PsP, mais ça marche sur d'autres supports de programmation, et puisque le langage m'a l'air identique... :)

minuteur:start()
temps = minuteur:time()
if temps > 4 then
minuteur:stop()
minuteur:reset()
goto X
screen:blit(0,0,menu)
end

lbl X

Burnout3
Burnout3
Niveau 10
11 juin 2008 à 17:09:18

J'ai déjà dit que tout les problèmes étaient réglés sauf celui du laser :p) Mais merci quand même ^^

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment