AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez
 

 Demineur en un script

Aller en bas 
AuteurMessage
onilink_
Modérateur
onilink_

Messages : 9108
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

Demineur en un script Empty
MessageSujet: Demineur en un script   Demineur en un script EmptyDim 13 Juin 2010 - 12:53

Voila un démineur sans ressources en 1 script desormais, et a mettre dans draw.
Si vous etes sous gm7 supprimez la ligne 10 : version = "gm6"
Si vous etes sous gm8 prenez le premier code.

Fichier : http://host-a.net/onilink_/demineur1script.gm6

Screen sous GM 6.1
Demineur en un script Mine1i

Code pour ceux qui sont sous GM8
Spoiler:
 

Citation :
if(!variable_local_exists('create'))
begin
//Debut variables parametrables
grille_w = 16
grille_h = 16
nbr_mines = 16
xx = 0
yy = 0

//Fin
create = 1
game_start = 0
nbr_mines = min(nbr_mines, grille_w*grille_h-1)

for(i=0 ; i<grille_w ; i+=1){
for(j=0 ; j<grille_h ; j+=1){
mine[i,j] = 0
cover[i,j] = 1
mode[i,j] = 0//0:cover, 1:drapeau, 2:?, 3:empty, 4:mine?
mines_near[i, j] = 0
}}

for(i=1 ; i<=9 ; i+=1)
color = 0
color[1] = c_blue
color[2] = c_green
color[3] = c_red
color[4] = c_maroon

//Creation des sprites
draw_set_color( c_silver )
draw_rectangle(16, 16, 32, 32, 0)
draw_set_color( make_color(128, 128, 128) )
draw_line(16, 16, 32, 16)
draw_line(16, 16, 16, 32)
spr_case = sprite_create_from_screen(16, 16, 16, 16, 0, 0, 0, 0, 0, 0)

draw_set_color( c_silver )
draw_rectangle(0, 0, 16, 16, 0)
draw_set_color( c_white )
draw_triangle(0, 15, 0, 0, 15, 0, 0)
draw_set_color( make_color(128, 128, 128) )
draw_triangle(0, 16, 16, 16, 16, 0, 0)
draw_set_color( make_color(192, 192, 192) )
draw_rectangle(2, 2, 13, 13, 0)
sprite_add_from_screen(spr_case, 0, 0, 16, 16)

draw_sprite(spr_case, 1, 0, 0)
draw_set_color(0)
draw_triangle(8, 8, 4, 12, 11, 12, 0)
draw_set_color(c_red)
draw_triangle(4, 5, 8, 3, 8, 8, 0)
sprite_add_from_screen(spr_case, 0, 0, 16, 16)

draw_sprite(spr_case, 1, 0, 0)
draw_set_color(c_blue)
tmp_font = font_add('Arial', 8, 1, 0, 0, 255)
draw_set_font(tmp_font)
draw_text(5, 1, '?')
sprite_add_from_screen(spr_case, 0, 0, 16, 16)
end

mx = max(0, min(grille_w-1, floor( (mouse_x+xx)/16 )))
my = max(0, min(grille_h-1, floor( (mouse_y+yy)/16 )))

if(mouse_check_button_released(mb_left)) {
if( !game_start )
begin
//on cree la grille de mines
mines_count = nbr_mines
while(mines_count)
{
randx = floor( random(grille_w) )
randy = floor( random(grille_h) )
if(!mine[randx, randy] && !(randx==mx && randy==my)){
mine[randx, randy] = 1
mines_count -= 1

for(i=0 ; i<8 ; i+=1) {
lx = lengthdir_x(1, i*45)
ly = lengthdir_y(1, i*45)
lx = sign(lx) * ceil( abs(lx) ) + randx
ly = sign(ly) * ceil( abs(ly) ) + randy
if( lx>=0 && lx<grille_w && ly>=0 && ly<grille_h)
mines_near[lx, ly] += 1
}}}
game_start = 1
end

if(mode[mx, my] == 0 || mode[mx,my] == 2){
if( mine[mx, my] == 0 ){
mode[mx, my] = 3
if(!mines_near[mx, my])
{
p = ds_stack_create()
ds_stack_push(p, mx + grille_w*my)

while(!ds_stack_empty(p)){
top = ds_stack_pop(p)
px = top mod grille_w
py = top div grille_w
for(i=0 ; i<8 ; i+=1) {
lx = lengthdir_x(1, i*45)
ly = lengthdir_y(1, i*45)
lx = sign(lx) * ceil( abs(lx) ) + px
ly = sign(ly) * ceil( abs(ly) ) + py
if( lx>=0 && lx<grille_w && ly>=0 && ly<grille_h)
if(!mine[lx, ly] && mode[lx, ly] == 0) {
mode[lx, ly] = 3
if(!mines_near[lx, ly])
ds_stack_push(p, lx + grille_w*ly)
}}}
ds_stack_destroy(p)
}}
else { /* game_over */
show_message('You Loose')
game_restart()
}}}

if(mouse_check_button_pressed(mb_right)) {
switch(mode[mx, my]){
case 0 : mode[mx, my] = 1 ; break
case 1 : mode[mx, my] = 2 ; break
case 2 : mode[mx, my] = 0 ; break
}}

for(i=0 ; i<grille_w ; i+=1){
for(j=0 ; j<grille_h ; j+=1){
if(mode[i,j] < 3 && !(i==mx && j==my && mouse_check_button(mb_left) && mode[i,j] != 1) )
draw_sprite(spr_case, mode[i,j]+ 1, 16*i + xx, 16*j + yy)

if(mode[i,j] == 3){
draw_sprite(spr_case, 0, i*16 + xx, j*16 + yy)
if(mines_near[i, j]) {
draw_set_color( color[ mines_near[i, j] ] )
draw_text(i*16+6, j*16+1, mines_near[i,j])
}}
}}

hidden = 0
for(i=0 ; i<grille_w ; i+=1){
for(j=0 ; j<grille_h ; j+=1){
if(mode[i,j] < 3) hidden += 1
}}

if(hidden == nbr_mines) { /* Partie gagnée */
show_message('You win')
game_restart()
}

_________________
Demineur en un script Runningpotato1Demineur en un script TvF6GED Demineur en un script MdetltS


Dernière édition par onilink_ le Dim 1 Aoû 2010 - 12:55, édité 12 fois
Revenir en haut Aller en bas
Mass
*Excellent utilisateur*
Mass

Messages : 3338
Localisation : Dans une canonnière wookie.
Projet Actuel : Living the life
Demineur en un script Void

Demineur en un script Empty
MessageSujet: Re: Demineur en un script   Demineur en un script EmptyDim 13 Juin 2010 - 13:07

Bouh ! Un peu longs les deux scripts :pac_dr:

_________________
Wyvup
Revenir en haut Aller en bas
http://madmass.mype.fr/CBNA/
onilink_
Modérateur
onilink_

Messages : 9108
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

Demineur en un script Empty
MessageSujet: Re: Demineur en un script   Demineur en un script EmptyDim 13 Juin 2010 - 13:29

Ouai mais bon ça reste quand meme un démineur, j'ai pas trouvé plus court, pis je sais pas si quelqu'un la testé mais tout y est...

Edit : jvais quand meme essayer de raccourcir tout ça , surtout le deuxieme qui peut etre compressé

_________________
Demineur en un script Runningpotato1Demineur en un script TvF6GED Demineur en un script MdetltS
Revenir en haut Aller en bas
red-error
Utilisateur confirmé: Rang ****
red-error

Messages : 1015
Projet Actuel : Demineur en un script Bas-machoire2000

Demineur en un script Empty
MessageSujet: Re: Demineur en un script   Demineur en un script EmptyDim 13 Juin 2010 - 15:16

C'est bizarre, j'ai fait un copier-coller et :
Code:
  spr_case = sprite_create_from_screen(0, 0, 16, 16, 0, 0, 0, 0, 0, 0)
                                                                      ^
at position 69: Wrong number of arguments to function or script.
Y'a ça 3 fois, il suffit d'enlever les , 0, 0 et d'en ajouter à deux autres endroits.
Tu as oublié de mettre à jour après correction des bugs ?

(De toutes façons je peux pas le lancer alors bon. [img; w=12; h=12]http://pics.imagup.com/member3/1261709312_Chapeaumelon.png[/img] )


En tout cas ça me rappelle le concours il y a un moment de jeux en un script (en fait maximum 5, et pas d'objets, seulement le room_creation event).
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_

Messages : 9108
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

Demineur en un script Empty
MessageSujet: Re: Demineur en un script   Demineur en un script EmptyDim 13 Juin 2010 - 16:01

Oui j'avoue c'est etrange, j'ai oublié de précisé qu'il est adapté a GM 6.1

Sinon j'ai optimisé tout ça et desormais le code est plus court et tout tient dans un seul script tord

Sinon tu la lancé depuis quelle version de gm ?

_________________
Demineur en un script Runningpotato1Demineur en un script TvF6GED Demineur en un script MdetltS
Revenir en haut Aller en bas
Invité
Invité



Demineur en un script Empty
MessageSujet: Re: Demineur en un script   Demineur en un script EmptyDim 13 Juin 2010 - 16:10

ben moi j'en ai fais autant de lignes que dans le tien pour dessiner des grilles de vertex.
c'est assez triste...
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_

Messages : 9108
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

Demineur en un script Empty
MessageSujet: Re: Demineur en un script   Demineur en un script EmptyDim 27 Juin 2010 - 20:14

Ajout de la compatibilité GM8...

_________________
Demineur en un script Runningpotato1Demineur en un script TvF6GED Demineur en un script MdetltS
Revenir en haut Aller en bas
Contenu sponsorisé




Demineur en un script Empty
MessageSujet: Re: Demineur en un script   Demineur en un script Empty

Revenir en haut Aller en bas
 
Demineur en un script
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Pokémon script project VX
» 1MP TREMPONT
» demande permission de monter a bord
» SAGITTAIRE (CM)
» GARDENIA (B.B. PLONGEURS DÉMINEURS)

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Scripts GML-
Sauter vers: