• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

PHP zadanie liczby losowe

Object Storage Arubacloud
0 głosów
162 wizyt
pytanie zadane 24 września 2020 w PHP przez JerzyJ Początkujący (350 p.)

 

Witam, mam do zrobienia zadanie z php'a (dopiero zaczynam "programować" i jestem w tym naprawdę mega zielony.)

<!DOCTYPE HTML>
<HTML lang="PL">
<HEAD>
      <meta charset="UTF-8" />
	  <TITLE>SZACHOWNICA</TITLE>
	  <link rel="stylesheet" href="style.css">
	  
</HEAD>
<BODY>
	<?php
		$poziomo=8;
		$pionowo=8;
		$wielkosc=2;
		$biala='<div style="width:'.$wielkosc.'cm;height:'.$wielkosc.'cm;background-color:white;float:left;color:black;text-align:center;vertical-align:center">';
		$czarna='<div style="width:'.$wielkosc.'cm;height:'.$wielkosc.'cm;background-color:black;float:left;color:white;text-align:center;vertical-align:center">';
		$przerwa='<div style="width:'.$wielkosc.'cm;height:'.$wielkosc.'cm;float:both"></div>';
		$czerwona='<div style="width:'.$wielkosc.'cm;height:'.$wielkosc.'cm;background-color:red;float:left;color:white;text-align:center;vertical-align:center">';
		$koniecdiv='</div>';
		$zmienna=rand(1,$pionowo*$poziomo);
		for ($x=0;$x<$poziomo;++$x)
		{
			for ($y=0;$y<$pionowo;++$y)
			{
			$losowa=rand(1,$pionowo*$poziomo);
			if ($zmienna==$losowa)
			{	
		        if ($x%2)
				{
					if ($y%2) echo $czerwona.$losowa.$koniecdiv;
					else echo $czerwona.$losowa.$koniecdiv;
				}
				else
			    {	
					if ($y%2) echo $czerwona.$losowa.$koniecdiv; 
					else echo $czerwona.$losowa.$koniecdiv;
				}
			}
			else
			{
				if ($x%2)
					if ($y%2) echo $biala.$losowa.$koniecdiv;
					else echo $czarna.$losowa.$koniecdiv;
				else
					if ($y%2) echo $czarna.$losowa.$koniecdiv; 
					else echo $biala.$losowa.$koniecdiv;
			}
			}
			if ($y==($pionowo)) echo $przerwa;
		}
			
	?>
	
	
</BODY>
</HTML>

POLECENIE: "LICZBY LOSOWE NIE MOGĄ SIĘ POWTARZAĆ"

To co aktualnie mi sie udało zrobić... Niestety liczby w ramkach się powtarzają...

komentarz 25 września 2020 przez VBService Ekspert (253,420 p.)
edycja 25 września 2020 przez VBService

Ten sam kod wykonuje się dla $x % 2, gdy jest true i gdy jest false.
Ta sama sytuacja $y % 2

                if ($x%2)
                {
                    if ($y%2) echo $czerwona.$losowa.$koniecdiv;
                    else echo $czerwona.$losowa.$koniecdiv;
                }
                else
                {   
                    if ($y%2) echo $czerwona.$losowa.$koniecdiv; 
                    else echo $czerwona.$losowa.$koniecdiv;
                }

można ten zapis skrócić do

            if ($zmienna==$losowa)
            {   
                echo $czerwona.$losowa.$koniecdiv;
            }
            else
            {
                if ($x%2)
                    if ($y%2) echo $biala.$losowa.$koniecdiv;
                    else echo $czarna.$losowa.$koniecdiv;
                else
                    if ($y%2) echo $czarna.$losowa.$koniecdiv; 
                    else echo $biala.$losowa.$koniecdiv;
            }

 

3 odpowiedzi

+1 głos
odpowiedź 25 września 2020 przez VBService Ekspert (253,420 p.)

Moja propozycja wink

<!DOCTYPE HTML>
<HTML lang="PL">
<HEAD>
      <meta charset="UTF-8" />
      <TITLE>SZACHOWNICA</TITLE>
      <link rel="stylesheet" href="style.css">
       
</HEAD>
<BODY>
  <?php
        $poziomo = 8;
        $pionowo = 8;
        $wielkosc = 2;
        $biala = '<div class="pole biala">';
        $czarna = '<div class="pole czarna">';
        $przerwa = '<div class="przerwa"></div>';
        $czerwona = '<div class="pole czerwona">';
        $koniecdiv = '</div>';

        $zmienna = rand(1,$pionowo*$poziomo);
        $losowe = range(1,$pionowo*$poziomo);
        shuffle($losowe);

        for ($x=0; $x<$poziomo; ++$x)
        {
            for ($y=0; $y<$pionowo; ++$y)
            {
                $losowa = $losowe[(count($losowe)-1)];
                array_pop($losowe);
            
                if ($zmienna == $losowa)
                {   
                    echo $czerwona.$losowa.$koniecdiv;
                }
                else
                {
                    if ($x % 2)
                    {
                       if ($y % 2) echo $biala.$losowa.$koniecdiv;
                         else echo $czarna.$losowa.$koniecdiv;
                    }
                    else
                    {
                       if ($y % 2) echo $czarna.$losowa.$koniecdiv; 
                         else echo $biala.$losowa.$koniecdiv;
                    }                
                }
            }
            if ($y == $pionowo) echo $przerwa;
        }  
  ?>
     
  <style>
    :root {
      --size: <?php echo $wielkosc; ?>cm;
    }
    .pole {
      width: var(--size);
      height: var(--size);
      float: left;
      text-align: center;
      line-height: var(--size);
    }
    .przerwa {
      width: var(--size);
      height: var(--size);
      float: both;
    }
    .biala {
      background-color: white;
      color: black; 
    }
    .czarna {
      background-color: black;
      color: white; 
    }
    .czerwona {
      background-color: red;
      color: white; 
    }
  </style>   
</BODY>

komentarz 28 września 2020 przez JerzyJ Początkujący (350 p.)

Jesteś w stanie wytlumaczyć mi czemu wyskakuje mi taki błąd

 

Parse error: syntax error, unexpected '$poziomo' (T_VARIABLE) in C:\xampp\htdocs\test\ZADANIE\index.php on line 11

1
komentarz 28 września 2020 przez JerzyJ Początkujący (350 p.)
Już ogarnąłem. Bardzo dziękuję.
0 głosów
odpowiedź 24 września 2020 przez dayvu Obywatel (1,470 p.)
$min = 0;
$max = 1000;
$uniqueRandomNumbers = [];
$expectedCount = 30;

while (count($uniqueRandomNumbers) < $expectedCount) {
    $randomNumber = rand($min, $max);
    $uniqueRandomNumbers[$randomNumber] = $randomNumber;
}

Funkcja rand($min, $max) zwraca wartość losową, która nie musi być unikalna. Spróbuj przygotować sobie wcześniej na przykład tablicę z losowymi i unikalnymi wartościami, i z niej później pobierać je po kolei.

0 głosów
odpowiedź 24 września 2020 przez Bosswell Nałogowiec (36,470 p.)

Polecenie za wiele nie mówi :)

https://www.php.net/manual/en/function.random-int.php

Wystarczy użyć random_int ( int $min , int $max ) aby otrzymać pseudo losową liczbę.

Podobne pytania

0 głosów
1 odpowiedź 369 wizyt
pytanie zadane 30 listopada 2022 w C i C++ przez Pysa6 Nowicjusz (220 p.)
–2 głosów
1 odpowiedź 274 wizyt
0 głosów
1 odpowiedź 1,276 wizyt
pytanie zadane 30 marca 2018 w SQL, bazy danych przez betman Bywalec (2,630 p.)

92,580 zapytań

141,432 odpowiedzi

319,665 komentarzy

61,965 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...