Partagez
Aller en bas
avatar
Zarby
Membre

Nombre de messages : 71
Age : 29
Distinction : aucune
Date d'inscription : 15/12/2011

Snake Minigame V1.0

le Dim 11 Aoû 2013 - 3:42
Infos :
Fait par Zarby Snake V1.0 (Script Original VX vers Ace)
pas de credit requis

Comment utiliser :
Copier le script au dessus de main, appeller la scene a l'aide d'un evenement :
Code:
SceneManager.call(Scene_Snake)
Mettre tout les variables "Graphics" a nil si vous voulez aucun graphics sinon graphics de base et a quoi il doivent ressembler :
head :

body :



Script:

Code:

#==============================================================================
# ** General Configuration
#------------------------------------------------------------------------------
#  You can set Parameters here
#==============================================================================
$snake_speed = 1
$speed_acceleration = 0.1
#return score to variable [Let it to 0 if you don't want to return score to a variable] :
$score_variable_id = 20
#text if we lose :
$lose_text = "Game Over"
#if we press Cancel key (escape) :
#0 = Leave to map instantly
#1 = Pause game and ask player if he want to leave
$cancel_action = 1
#Score Management :
#every time snake move it decrease by 1 the value of the score the food give
$everytime_snake_move = 1
$everytime_snake_eat = 100

#Graphics Settings
#if you don't want graphics set all to : nil
#(image must be 32x16 pixel in picture folder first 16 pixel = looking to right side, last 16 pixel = looking to down side)
$head_graphics = "head"
$body_graphics = "body"
$food_graphics = nil





#==============================================================================
# ** Window_PauseCommand
#------------------------------------------------------------------------------
#  This command window appears when escape is pressed while playing
#==============================================================================

class Window_PauseCommand < Window_Command
  def initialize(x,y)
    super(x, y)

  end

  def make_command_list
    add_command("Continue",   :continue,   true)
    add_command("Leave",   :leave,   true)
  end
  
end

#===============================================================================
# ** Score_Window
#-------------------------------------------------------------------------------
#  This window display the score                                          
#===============================================================================
class Window_Score < Window_Base

  def initialize(x, y)
    super(x, y, 160, line_height + 32)
    @score = 0
    refresh
    self.opacity = 0
    self.back_opacity = 0
  end

  def update_score(score)
    @score = score
  end
  
  def refresh
    self.contents.clear
    self.contents.draw_text(0, 0, 200, line_height, @score)
  end
end

#===============================================================================
# ** Snake_Body
#-------------------------------------------------------------------------------
#  This class is the snake head and body                                          
#===============================================================================

class Snake_Body
    attr_accessor :x
   attr_accessor :y
    attr_accessor :direction
  def initialize(x,y,direction)
    @sprite = Sprite.new
    @x = x
    @y = y
    @sprite.x = x*16
    @sprite.y = y*16
    @lastx = @x
    @lasty = @y
    @graphicx = 0
    @graphicy = 0
    @sprite.bitmap = Bitmap.new(16,16)
    @bmp = nil
    
    if (direction != -1)#body
      if ($body_graphics != nil)
        @bmp = Cache.picture($body_graphics)
        @sprite.bitmap.blt(0,0,@bmp,Rect.new(16,0,16,16))
      else
        @sprite.bitmap.fill_rect(Rect.new(0,0,16,16),Color.new(0,200,0))
      end
    else#head
      if ($body_graphics != nil)
        @bmp = Cache.picture($head_graphics)
        @sprite.bitmap.blt(0,0,@bmp,Rect.new(16,0,16,16))
      else
        @sprite.bitmap.fill_rect(Rect.new(0,0,16,16),Color.new(0,250,0))
      end
      @direction = 0
    end
    @speed = 0
  end

  
  def updatelastpos()
    @lastx = @x
    @lasty = @y
    @graphicx = 0
    @graphicy = 0
  end
  
  def dispose()
    @bmp.dispose
    @sprite.dispose
  end
    
  def updatepos(speed)
    @speed = speed
    if (@x> @lastx)
      @graphicx = (@graphicx+@speed)
    end
    if (@y > @lasty)
      @graphicy = (@graphicy+@speed)
    end
    if (@x< @lastx)
      @graphicx = (@graphicx-@speed)
    end
    if (@y < @lasty)
      @graphicy = (@graphicy-@speed)
    end


    @sprite.x = (@lastx*16)+@graphicx
    @sprite.y = (@lasty*16)+@graphicy
    
  if @bmp != nil
    if @lastdirection != @direction
      @sprite.bitmap.clear
      case @direction
      when 0
        @sprite.bitmap.blt(0,0,@bmp,Rect.new(16,0,16,16))
      when 1
        @sprite.bitmap.blt(0,0,@bmp,Rect.new(0,0,16,16))
      when 2
        @sprite.bitmap.blt(0,0,@bmp,Rect.new(16,16,16,-16))
      when 3
        @sprite.bitmap.blt(0,0,@bmp,Rect.new(16,0,-16,16))
      end
    end
  end
  
    @lastdirection = @direction
  end
  
  
end  
  
class Scene_Snake < Scene_Base
  

  def initialize
    super
    create_window_score
    create_window_command
    create_sprites
    create_settings
    create_object_array
    generate_food(rand(34),rand(26))
  end


  def update
    super

    if Input.trigger?(:B)
      pause
    end

    if @pause == false
      get_direction
      if (@direction != -1)
        @timer += @snake_speed
        every_tick
        update_snake
        
      end
    end
  
  end
  

  def terminate
    super
    
  end
  
  
  def every_tick
    
    if (@timer >= 16)
      if @food_score > 0
       @food_score = @food_score - 1
      end
      (@snakebody.size-1).downto(1){ |i|
      @snakebody[i].direction = @snakebody[i-1].direction
      @snakebody[i].updatelastpos()
      @snakebody[i].x = @snakebody[i-1].x
      @snakebody[i].y = @snakebody[i-1].y
      }
      @snakebody[0].direction = @direction
      @snakebody[0].updatelastpos()
        
      if (@direction == 0)#Down
        @snakebody[0].y = @snakebody[0].y+1
      end
      if (@direction == 1)#Right
        @snakebody[0].x = @snakebody[0].x+1
      end
      if (@direction == 2)#Up
        @snakebody[0].y = @snakebody[0].y-1
      end
      if (@direction == 3)#Left
        @snakebody[0].x= @snakebody[0].x-1
      end
      
     @window_score.update_score(@score)
      @window_score.refresh
      
      if (@snakebody[0].x > 33)
        @snakebody[0].x = 0
      end

      if (@snakebody[0].x < 0)
        @snakebody[0].x = 33
      end

      if (@snakebody[0].y > 25)
        @snakebody[0].y = 0
      end

      if (@snakebody[0].y < 0)
        @snakebody[0].y = 25
      end
        
      @timer = 0
    end
    
  end
  
  
  def get_direction
    
    if Input.press?(Input::DOWN)
     @direction = 0
    end
    if Input.press?(Input::UP)
     @direction = 2
    end
    if Input.press?(Input::LEFT)
     @direction = 3
    end
    if Input.press?(Input::RIGHT)
     @direction = 1
    end
  end
  
  def update_snake
    (@snakebody.size-1).downto(0){ |i|
          
      if (i != 0)
        if ((@snakebody[0].x == @snakebody[i].x) and (@snakebody[0].y == @snakebody[i].y))
                        
          $game_message.texts.push($lose_text)
          command_leave
          if $score_variable_id  != 0
            $game_variables[$score_variable_id] = @score
          end
                    
         break;
        end
      end
      @snakebody[i].updatepos(@snake_speed)}
      
     
    if ((@snakebody[0].x == @food_x) and (@snakebody[0].y == @food_y))
      @snakebody.push(Snake_Body.new(@snakebody[@snakebody.size-1].x,@snakebody[@snakebody.size-1].y,@snakebody[@snakebody.size-1].direction))
      @snake_speed = @snake_speed + @speed_acceleration
      @score =  @score + @food_score
      @window_score.update_score(@score)
      @food_score = $everytime_snake_eat
     generate_food(rand(34),rand(26))
    end
      
 end

  
  
  def pause
    if @pause == false
      @window_command.activate
      @window_command.visible = true
      @pause = true
    else
      unpause
    end
  end
  
  def unpause
    @window_command.visible = false
    @pause = false
  end
  
  def create_window_score
    @window_score = Window_Score.new(0,0)
  end
  
  def create_window_command
    @window_command = Window_PauseCommand.new(192,160)
    @window_command.set_handler(:continue,      method(:command_continue))
    @window_command.set_handler(:leave,      method(:command_leave))
    @window_command.visible = false
    @window_command.deactivate
  end
  
  def create_sprites
    @food_sprite = Sprite.new
    @food_sprite.bitmap = Bitmap.new(16,16)
    if $food_graphics != nil
      @food_sprite.bitmap = Cache.picture($food_graphics)
    else
      @food_sprite.bitmap.fill_rect(Rect.new(0,0,16,16),Color.new(250,230,130))
    end
  end
  
  def create_object_array
  @snakebody = []
    @snakebody.push(Snake_Body.new(17,13,-1))
    @snakebody.push(Snake_Body.new(17,13,0))
    @snakebody.push(Snake_Body.new(17,13,0))
  end
  
  def create_settings
    @snake_speed = $snake_speed
    @speed_acceleration = $speed_acceleration
    @direction = -1
    @score = 0
    @food_score = $everytime_snake_eat
    @timer = 25
    generate_food(rand(34),rand(26))
    @food_x = 0
    @food_y = 0
    @leaving = false
    @pause = false
  end
  
  def generate_food(x,y)
    @food_x = x
    @food_y = y
    @food_sprite.x = x * 16
    @food_sprite.y = y * 16
  end
  
  def command_continue
    @window_command.visible = false
    @pause = false
  end
  
  def command_leave
    @window_command.dispose
    SceneManager.call(Scene_Map)
  end
  
end

Screenshot :
Image:




+5 points de participation

avatar
brasegajames
Membre

Nombre de messages : 100
Age : 24
Localisation : Devant mon ordi!!!
Distinction : aucune
Date d'inscription : 19/12/2008

Re: Snake Minigame V1.0

le Dim 11 Aoû 2013 - 23:17
Si c'est pas Zarby? Ca fait longtemps vieux !!!

Nous avons là un super scripteur qui nous vient d'un autre forum bbactif...
Si je me souviens bien du moins Smile

Alors t'es actif seulement les grandes vacances comme moi hein? :p

Sinon, sympa l'initiative de faire un snake, tu te met à transposer tes scripts de vx vers ace en ce moment? Smile
avatar
Zarby
Membre

Nombre de messages : 71
Age : 29
Distinction : aucune
Date d'inscription : 15/12/2011

Re: Snake Minigame V1.0

le Lun 12 Aoû 2013 - 2:47
haha super scripteur faut pas exagérer je fait ca pour passer le temps surtout.

la raison pourquoi j'étais pas la c'est que je fait plus vraiment de rpg maker je suis sur XNA en C# pour le moment j'ai 2-3 projets je sais pas encore sur le quel je vais me concentrer :o

j'ai pas énormement de scripts donc non je les transpose pas tous sur Ace, mais si j'en fait d'autre sur VX il vont être compatible Ace aussi Wink
avatar
brasegajames
Membre

Nombre de messages : 100
Age : 24
Localisation : Devant mon ordi!!!
Distinction : aucune
Date d'inscription : 19/12/2008

Re: Snake Minigame V1.0

le Lun 12 Aoû 2013 - 14:59
Ok d'accord.
Ayant été à Epita cette année (école d'info assez cool), j'ai appris à utiliser C# et XNA durant un projet cette année Wink

On a abouti à un truc assez cool. ICI

Sinon, je vais arrêter de viander ton post de snake qui a le mérite de pas être une section flood.
Si tu veux on s'ajoute skype ça pourrait être cool de faire des trucs ensemble Smile
avatar
Zarby
Membre

Nombre de messages : 71
Age : 29
Distinction : aucune
Date d'inscription : 15/12/2011

Re: Snake Minigame V1.0

le Mar 13 Aoû 2013 - 3:34
Wow personnellement j'ai pas eu la chance d'aller a un école d'info lol, donc mes capacité en C# sont assez restreint ca pourrais être pas mal d'essayer de faire quelque chose a plusieurs mais comme je dit je suis pas très doué ^^, sinon elle est vraiment pas mal la video jai pas eu le temps de tester mais j'ai regarder la vidéo ca a l'air bien Smile, sinon pour travailler a plusieurs le problème c'est que je suis pas doué pour grand chose a part les script lol enfin mon skype c'est : adamoadamo12323@hotmail.com je suis pas connecté très souvent et je suis québecois donc pas la au même heurs non plus si tu veut m'ajouter y'a pas de problème Wink
avatar
az3rtY
Membre

Nombre de messages : 436
Age : 17
Localisation : Sûrement, devant mon pc ^^
Distinction : aucune
Date d'inscription : 16/04/2013
http://kwang.webobo.biz

Re: Snake Minigame V1.0

le Mer 14 Aoû 2013 - 23:58
Pas mal mais il faut les nommer comment les images ? Puis la boule elle est ou l'image ? Smile
avatar
akais315
Membre

Nombre de messages : 79
Age : 24
Localisation : Belgique
Distinction : aucune
Date d'inscription : 27/07/2013

Re: Snake Minigame V1.0

le Jeu 15 Aoû 2013 - 0:06
C'est pourtant clair, tu les nomme head et body, et la boule est de base dans rm je pense, enfin moi elle s'affiche bien...
avatar
az3rtY
Membre

Nombre de messages : 436
Age : 17
Localisation : Sûrement, devant mon pc ^^
Distinction : aucune
Date d'inscription : 16/04/2013
http://kwang.webobo.biz

Re: Snake Minigame V1.0

le Jeu 15 Aoû 2013 - 0:08
Ok, je prend ce script tout de suite Smile Mais il sert un peut a rien :P
avatar
akais315
Membre

Nombre de messages : 79
Age : 24
Localisation : Belgique
Distinction : aucune
Date d'inscription : 27/07/2013

Re: Snake Minigame V1.0

le Jeu 15 Aoû 2013 - 0:13
Je ne pense pas qu'il ne serve à rien, il peut être utile si on fait une salle de casino, ou de jeu d'arcade dans notre jeu, il suffit de récupérer le résultat pour obtenir telle ou telle récompense, ou autres applications, mais bon bien sûr l'interface n'est pas des plus attirants, mais ce n'est qu'un détail et relativement simple à régler Very Happy
avatar
az3rtY
Membre

Nombre de messages : 436
Age : 17
Localisation : Sûrement, devant mon pc ^^
Distinction : aucune
Date d'inscription : 16/04/2013
http://kwang.webobo.biz

Re: Snake Minigame V1.0

le Jeu 15 Aoû 2013 - 0:16
Oui mais cela me fait un message d'érreur donc j'ai fait ça :

J'ai mit body et heart dans le dossier Pictures

J'ai nommer le script : Scene_Snake

Puis sa me fait un messages d'erreur pouvez vous m'aider ?
avatar
akais315
Membre

Nombre de messages : 79
Age : 24
Localisation : Belgique
Distinction : aucune
Date d'inscription : 27/07/2013

Re: Snake Minigame V1.0

le Jeu 15 Aoû 2013 - 0:23
Ce n'est pas heart, mais head...
avatar
az3rtY
Membre

Nombre de messages : 436
Age : 17
Localisation : Sûrement, devant mon pc ^^
Distinction : aucune
Date d'inscription : 16/04/2013
http://kwang.webobo.biz

Re: Snake Minigame V1.0

le Jeu 15 Aoû 2013 - 11:46
Une faute d'orthographe que j'ai fait sur le forum mais pas sur mon projet, faut t'il vraiment les mettrent dans pictures ?
avatar
Zarby
Membre

Nombre de messages : 71
Age : 29
Distinction : aucune
Date d'inscription : 15/12/2011

Re: Snake Minigame V1.0

le Jeu 15 Aoû 2013 - 12:36
@Zarby a écrit:#Graphics Settings
#if you don't want graphics set all to : nil
#(image must be 32x16 pixel in picture folder first 16 pixel = looking to right side, last 16 pixel = looking to down side)
$head_graphics = "head"
$body_graphics = "body"
$food_graphics = nil
si tu veut pas utiliser d'image tu met les 3 variable _graphics a nil
sinon tu peut les renommer de base c'est head et body, les images doivent ce trouver picture si tu as enregistrer les 2 image que j'ai mis plus haut dans le 1ier poste et que tu les renomme en head.png et body.png et que tu les charge dans picture ca devrais fonctionner Wink
avatar
az3rtY
Membre

Nombre de messages : 436
Age : 17
Localisation : Sûrement, devant mon pc ^^
Distinction : aucune
Date d'inscription : 16/04/2013
http://kwang.webobo.biz

Re: Snake Minigame V1.0

le Jeu 15 Aoû 2013 - 13:07
Ok Smile Même si je neut comprend pas les 3 variables a nil mais je vais me débrouillé Very Happy
avatar
Zarby
Membre

Nombre de messages : 71
Age : 29
Distinction : aucune
Date d'inscription : 15/12/2011

Re: Snake Minigame V1.0

le Jeu 15 Aoû 2013 - 13:31
j'ai mis la variable $food_graphics a nil par defaut regarde en haut du script completement tu va voir, suffit de faire la même chose avec les autres donc :
$head_graphics = nil
$body_graphics = nil
$food_graphics = nil

sinon pour utiliser un image qui ce trouve dans le dossier picture tu met :

$head_graphics = "tonimage"

elle dois ressembler a l'image que je donne dans le premier poste donc 32x16 pixel, les 16 premiers pixel image de coté droit et 16 autre pixel image vers le bas
Contenu sponsorisé

Re: Snake Minigame V1.0

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum