Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 27
  1. #1

    [Pascal] Disposizione Random

    Salve ragazzi allooora..Sono in un vicolo cieco...

    Sto programmando un giochetto con pascal.. un'opzione del gioco richiede di far disporre le pedine ('O') nella griglia di gioco(una matrice 7x7) in modo random. Io ho fatto così ma non mi stampa nulla..

    program dispos;
    type matrice = array [1..7, 1..7] of char;

    var
    cont, ped, i, j,y: integer;
    mat: matrice;

    writeln ('Inserisci il numero di pedine');
    readln (ped);
    cont:=1;

    while (cont<=ped) do
    begin
    for i:=1 to 7 do
    for j:=1 to 7 do
    begin
    y:=0;
    randomize;
    y:= random (2);
    end;

    if y=1 then
    mat [i,j]:= 'O';
    cont:=cont+1;
    end;


    La variabile cont mi serve per utilizzare solo il numero di pedine che ho deciso di utilizzare..HELP

  2. #2
    Prova con una cosa del genere:

    codice:
    program dispos; 
    
    { "Decommenta" la riga seguente se usi Delphi
     {$APPTYPE CONSOLE}}
    
    type 
      TMatrice = array [1..7, 1..7] of Char; 
    
    var 
      i, j, pedine: Integer;
      matrice: TMatrice;
    
    begin
      { Inizializza il seme (una sola volta) }
      Randomize;
     
      { Accetta l'input e verifica se è entro i limiti (cosa accade se l'utente inserisce un carattere o una stringa?) }
      Write('Numero di pedine (compreso tra 1 e 49) = ');
      Readln(pedine);
      if (pedine < 1) or (pedine > 49) then 
        Exit;
     
      repeat
        i := Random(7) + 1;
        j := Random(7) + 1;
        { Evita doppioni }
        if matrice[i, j] <> 'O' then 
        begin
          matrice[i, j] := 'O';
          Dec(pedine);
        end;
      until pedine = 0;
     
      { Stampa la matrice in modo molto "grezzo" }
      for i := 1 to 7 do
      begin
        for j := 1 to 7 do
        begin
          Write(matrice[i, j], ' ');
        end;
        Writeln;
      end;
    end.
    Questo è l'output per pedine = 13:

    codice:
    Numero di pedine (compreso tra 1 e 49) = 13
              O O
          O
        O
      O       O O
        O       O
        O O O
                O
    "Se riesci a passare un pomeriggio assolutamente inutile in modo assolutamente inutile, hai imparato a vivere."

  3. #3
    Va benissimo.. MI spieghi a cosa serve Dec(ped)..

    Grazie mille del tuo aiuto...

  4. #4
    Dec(ped)..
    dec = decrementa
    inc = incrementa

    in Pascal:

    dec(variabile) equivale a variabile := variabile -1
    inc(variabile) equivale a variabile := variabile + 1

    Puoi passare un eventuale incremento/decremento come secondo parametro della funzione:

    dec(variabile, 99) equivale a variabile := variabile - 99
    inc(variabile, 99) equivale a variabile := variabile + 99
    "Se riesci a passare un pomeriggio assolutamente inutile in modo assolutamente inutile, hai imparato a vivere."

  5. #5
    Grazie..mi sei molto d'aiuto!!

    Sono autodidatta in programmazione e quindi mi perdo presto...

  6. #6
    Ho inserito nel programma la richiesta delle cordinate per poter muovere le pedine e poter così anche "mangiarle" (come nella dama)..però mi sono resa conto che utilizzando la disposizione random non sempre ho la possibilità di giocare in quanto le pedine vengono a trovarsi ad esempio agli angoli isolate oppure sono distanziate tra loro; questa sarebbe quindi una situazione di stallo del gioco...e in questo caso quale istruzione gli potrei dare per evidenziare tutte queste situazioni che fanno terminare il mio gioco??

  7. #7
    Dovresti illustrare in dettaglio TUTTE le regole del gioco...
    "Se riesci a passare un pomeriggio assolutamente inutile in modo assolutamente inutile, hai imparato a vivere."

  8. #8
    Ok allora..vediamo se riesco a spiegarvelo bene...

    Si parte da una disposizione iniziale delle pedine. Lo scopo del gioco è quello di eliminare via via le pedine mediante delle mosse che consistono nel far saltare una pedina oltre una di quelle adiacenti, per posizionarsi così su di una cella vuota. Si può muovera la pedina solo in orizzontale e verticale. La pedina "mangiata" viene ovviamente rimossa dalla griglia di gioco. Si vince quando tutte le pedine vengono mangiate e ne resta solo una.

    Questo riguarda le regole in generale, poi gli voglio mettere il punteggio e varie opzioni che pian piano mi vengono le ispirazioni mi propongo di sviluppare ocn voi..tipo punteggi migliori, pedine mangiate ecc. Intanto vorrei risolvere il problema appena postato della situazione di stallo... che mi suggerite?

  9. #9
    che mi suggerite?
    Di estendere il set di regole per rendere consistente il gioco, come hai notato anche tu quelle attuali comportano diverse situazioni di stallo, dunque non tutte le partite possono essere portate a termine. Il buon esito di una partita al momento è legato alla disposizione iniziale e/o alla sequenza di mosse del giocatore.

    Per iniziare dovresti buttar giù una lista completa di situazioni di stallo.
    "Se riesci a passare un pomeriggio assolutamente inutile in modo assolutamente inutile, hai imparato a vivere."

  10. #10
    Okay mi metto subito all'opera per "listare" eventuali situazioni di stallo e poi le posto...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.