Skip to main content

On Sale: GamesAssetsToolsTabletopComics
Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

Remake Space Invader

A topic by Christever created Nov 16, 2017 Views: 501 Replies: 12
Viewing posts 1 to 12
Submitted (1 edit)

Bonjour à toutes et tous,


pour cette nouvelle GameJam, je vais tenter de recréer un space invader. Le tout, bien évidement en pur code ......

je vais utiliser le framework Love2d et utiliser 2 librairies ( Classic.lua permettant une approche objet, et tick.lua pour les timers). Je découvre ces deux librairies, donc double challenge .....

Extrait de code pour les graphismes ( ennemis)

Enemy=object:extend()

function Enemy:new(pNum)

  self.image1={
    0,0,0,1,1,1,0,0,0,
    0,0,1,1,1,1,1,0,0,
    0,1,1,0,1,0,1,1,0,
    0,1,1,1,1,1,1,1,0,
    0,1,0,1,1,1,0,1,0,
    1,0,0,0,0,0,0,0,1,
  }
    self.image2={
    0,0,0,1,1,1,0,0,0,
    0,0,1,1,1,1,1,0,0,
    0,1,1,0,1,0,1,1,0,
    0,1,1,1,1,1,1,1,0,
    0,1,0,1,1,1,0,1,0,
    0,0,1,0,0,0,1,0,0,
  }
  self.width=9
  self.height=6
  self.tile=4
  
  self.posX=spaceX+((self.width*self.tile)+spaceX)*(pNum-1)
  self.posY=spaceY
  self.frame=1
  self.timer=1
  self.speed=40

end

------------------------------------------------

Sur le gif un problème de décalage sur le dernier ennemis à droite, à présent résolu



Bon Code à tous

Chris.

HostSubmitted

Parfait!

Tu utilises les canvas pour optimiser les affichages ?

Submitted (2 edits)

Absolument pas .... je ne  connaissais même pas ....

Je suis en train de regarder un peu pour voir  exactement ce que c'est ... 

J' ai vu une vidéo de notre ami Tetsuro ( ici ) ... mais je préfère les PDF ... plus simple pour moi à utiliser.

Chris.

Submitted

Ci-dessous code pour la m.a.j et l' affichage :

function Enemy:update(dt)
  self.posX=self.posX+(self.speed*dt*direction)
  if self.posX<spaceX or self.posX>(WINDOW_WIDTH-(self.width*self.tile)-spaceX) then
    direction=-direction
    decalageY=decalageY+20
  end
  
  self.timer=self.timer-0.1
  if self.timer<0 then 
    self.timer=1 
    if self.frame==1 then self.frame=2 else self.frame=1 end
  end
  
end

function Enemy:draw()
  for l=1,self.height do
    local lig=(l-1)*self.width
    for c=1,self.width do
      local image
      if self.frame==1 then image=self.image1 else image=self.image2 end
      if image[c+lig]==1 then
        love.graphics.rectangle("fill",self.posX+(c-1)*self.tile, (self.posY+(l-1)*self.tile)+decalageY,self.tile, self.tile)
      end
    end
  end
end

Le décalage vertical est maintenant opérationnel 


Submitted (1 edit)

Nouvelle version .... 

2 lignes d' invaders ( pas très français .... ) , mais les tirs ne sont plus opérationnels ... je réglerai ça demain ...

Menu fonctionnel

Submitted

Submitted

Reste à gérer les collisions avec les bases, gérer la vie du joueur, et si j' ai le temps hightscore et les sons


Submitted

Menu ajouté ainsi que 2 lignes d'ennemis



Submitted

Rajouts sons et musiques

Submitted

Menu plus consistant ( non ça ne se mange pas ..... )




Submitted

Mise a jour : Code réécrit pour utiliser au mieux la librairie Classic.lua ( Poo )

Ajout de vaisseaux mères

Ajout des scores



Submitted

Destruction progressives des bases opérationnelles 

Submitted

Dernière mise a jour ( je pense ) ..
Modification des vilains pas beaux

augmentation de la difficulté 

https://christever.itch.io/spaceinvader-pur-code/devlog/17000/mise-a-jour-du-031...