Pokaż wyniki od 1 do 2 z 2

Wątek: Gra w statki - dobre ustawienie współrzędnych

  1. #1
    Zarejestrowany
    Dołączył
    Jun 2012
    Posty
    4

    Domyślnie Gra w statki - dobre ustawienie współrzędnych

    Witam.

    Tworzę jak na razie prostą grę w statki czyli 10x10 pól. Próbuje stworzyć zabezpieczenie dzięki któremu np. czteromasztowiec nie będzie miał pól 1-1, 1-2, 1-3, 1-10, pierwsze dwie liczby wskazują czy poziomo czy pionowo (w tym przypadku poziomo lecz z błędem). Z racji takiej, że do formularza wprowadzam dwie liczby po przecinku rozbijam je funkcją explode i z czterech wartości robi się nagle osiem. Dane jak na razie wpisuje na sztywno czyli dwie liczby po przecinku. Kod który odbiera pozycję jednego statku:

    Kod php:
    $a $_POST["nr1"];
    $b $_POST["nr2"];
    $c $_POST["nr3"];
    $d $_POST["nr4"];

    $ciag $_POST["nr1"].','.$_POST["nr2"].','.$_POST["nr3"].','.$_POST["nr4"];
    $zn explode(','$ciag);

    $liczba1 $zn[0];
    $liczba2 $zn[1];
    $liczba3 $zn[2];
    $liczba4 $zn[3];
    $liczba1_1 $zn[4];
    $liczba1_2 $zn[5];
    $liczba1_3 $zn[6];
    $liczba1_4 $zn[7]; 
    Nie mogę sobie poradzić z instrukcją warunkową. Pomoże ktoś chociaż z jednym polem sąsiednim?
    Ostatnio edytowane przez evolution ; 29-06-2012 o 16:16

  2. #2
    Aktywny
    Dołączył
    Jul 2008
    Posty
    866

    Domyślnie

    Niby takie proste, a jednak pomyśleć trzeba trochę.

    Najpierw sprawdzamy, czy te wartości mają od 1 do 10. Jeżeli ktoś ma inną wartość, to najwidoczniej musiał ją zmienić w JavaScripcie czy coś, myślę, że możemy po prostu liczbę przybliżyć w dół, do naturalnej.

    Kod:
    
    $liczba1 = floor($zn[0]);
    $liczba2 = floor($zn[1]);
    ...
    $liczba1_4 = floor($zn[7]);  
    Mamy teraz liczbę naturalną, zakładając, że dał nam liczbę.. To też wszystko warto sprawdzać, uciążliwe.

    Kod:
    $i=1;
    while($i != 5)
    {
    if ($liczba1 >= '1' && $liczba1 <= '10')
    {
    //poprawna liczba//
    }
    else { error(); }
    if ($liczba_1 >= '1' && $liczba_1 <= '10')
    {
    //poprawna liczba//
    }
    else { error(); }
    $i++;
    }
    W sumie nie wiem, czemu to napisałem. +To uświadomiło mi, jak dawno nie zajmowałem się php, wiem, że to nie jest idealnie, ale powinno działać. W każdym razie to nie jest odpowiedź na temat.

    Sprawdźmy, czy one są w jednej kolumnie lub jednym rzędzie..

    W takim razie

    $liczba1 == $liczba2 == $liczba2 == $liczba2
    LUB ||
    $liczba_1 == $liczba_2 == $liczba_2 == $liczba_2

    Są w jednym rzędzie / kolumnie.

    Jeżeli są w jednym rzędzie, to wartość bezwzględna różnicy ich położenia X musi być równa 1.
    Jeżeli są w jednym kolumnie, to wartość bezwzględna różnicy ich położenia Y musi być równa 1.

    http://www.php.net/manual/en/function.abs.php

    Do tego jest funkcja abs(INT);

    A więc..

    abs($liczba1-$liczba2)==1
    abs($liczba2-$liczba3)==1
    abs($liczba3-$liczba4)==1

    Tak samo z położeniem Y...


    Problem w tym, że nie napisałeś, które wartości są pionowe a które poziome, to by było mi łatwiej wyjaśnić.

    Mam nadzieję, że nic nie pomyliłem i trochę rozjaśnię to.

Informacje o wątku

Użytkownicy przeglądający ten wątek

Aktualnie 1 użytkownik(ów) przegląda ten wątek. (0 zarejestrowany(ch) oraz 1 gości)

Podobne wątki

  1. Ustawienie mapy według współrzędnych
    Przez Croos w dziale Problemy przy tworzeniu własnej gry
    Odpowiedzi: 7
    Ostatni post / autor: 15-10-2011, 15:10
  2. Program do współrzędnych
    Przez remo w dziale Pytania/Prośby
    Odpowiedzi: 1
    Ostatni post / autor: 01-07-2011, 07:19
  3. Dobre rady do tworzenia gry
    Przez Arthes w dziale Kosz
    Odpowiedzi: 2
    Ostatni post / autor: 26-05-2011, 22:18
  4. Obliczanie odległości ze współrzędnych
    Przez Ligolis w dziale PHP / MySql
    Odpowiedzi: 29
    Ostatni post / autor: 25-08-2010, 22:02

Zakładki

Uprawnienia umieszczania postów

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •