Autor | Zpráva | ||
---|---|---|---|
zeldacz Profil |
#1 · Zasláno: 6. 3. 2011, 21:33:02
Nevěděli byste jak udělat tohle pomocí jazyků: PHP, JavaScript, HTML a CSS:
"Vytvořte jednoduchou stránku, která bude mít 2 formulářová políčka - pro počet řádků a sloupců - a tlačítko, po jehož stisknutí se vykreslí klasická šachovnice (střídající se černé a bílé čtverečky) o zadaném počtu řádků a sloupců. Jednotlivá políčka se musí těsně dotýkat." |
||
TomasJ Profil |
#2 · Zasláno: 6. 3. 2011, 21:58:27 · Upravil/a: TomasJ
Věděli, jde to jednoduše pomocí JS, HTML tabulky a CSS. Máš už nějakou práci hotovou, nebo chceš kompletní řešení bez vlastní snahy?
Poradím ti. Pokud umíš JS, uděláš si cyklus, ve kterém budeš 1. proměnnou používat na střídání barvy (černá/bílá), 2. proměnnou na přidávání řádků a v tomto cyklu bude další cyklus, který bude přidávat sloupce (buňky) v jednotlivých řádcích. |
||
1Pupik1989 Profil |
#3 · Zasláno: 6. 3. 2011, 22:02:55 · Upravil/a: 1Pupik1989
Tak stačí udělat dva inputy s hodnotou a ty vkládat do dvou vnořených cyklů. Pak se akorát zjišťuje, jestli je pole sudé, či liché. Tabulce se nastaví cellpadding a cellspacing na 0.
tady něco o tabulkách: Tabulky |
||
TomasJ Profil |
#4 · Zasláno: 7. 3. 2011, 00:01:22 · Upravil/a: TomasJ
No často se to neděje, nicméně přikládám skoro hotové řešení (bez formuláře pro počet políček), jelikož mě to nějak zaujalo. Je možné, že to jde jednodušeji a kdo to umí jednodušeji, má výhodu a může se pochlubit :)
Kód: <script> function CreateTable(amount,size,col1,col2) { var table = document.createElement("table"); table.cellPadding="0"; table.cellSpacing="0"; table.style.cssText = "width:"+(amount*size)+"px;height:"+(amount*size)+"px;"; var row,col,bgcol; for(var r=0,bg=0;r<amount;r++,bg++) { if(!bg){bgcol=col1;}else{bgcol=col2;bg=-1;} row = document.createElement("tr"); for(var c=0,bg2=0;c<amount;bg2++,c++) { if(!bg){if(!bg2){bgcol=col1;}else{bgcol=col2;bg2=-1;}}else{if(!bg2){bgcol=col2;}else{bgcol=col1;bg2=-1;}} col = document.createElement("td"); col.style.cssText = "width:"+size+"px;height:"+size+"px;background-color:"+bgcol+";"; row.appendChild(col); } table.appendChild(row); } document.body.appendChild(table); } </script> Používá se to tak, že se zavolá tato funkce s následujícími parametry: CreateTable(X,Y,COL1,COL2); Kde: X je počet políček na výšku (ten samý se nastaví i na šířku - tzn. že z šachovnice bude vždy čtverec), Y je šířka a výška jednotlivých políček (v pixelech), COL1 je barva 1. políčka, COL2 je barva 2. políčka. X a Y se udávají jen jako číslo (ne v uvozovkách ani v apostrofech), COL1 a COL2 se udávají v uvozovkách nebo apostrofech. |
||
meris Profil |
#5 · Zasláno: 7. 3. 2011, 01:10:09
Tomáš: tvé řešení vygeneruje šachovnici, která bude mít stejný počet řádků a sloupců.
<script> function CreateTable(pocet_radku, pocet_sloupcu,col1,col2) { var result ="<table cellspacing=0 cellpading=0>"; var radek = 0, sloupec = 0; var color = new Array(col1,col2); // barvy si vlozim do pole ( nebo jako parametr v poli predam) var barva; while ( radek < pocet_radku) { // zaciname novy radek barva = color[radek%2]; result += "<tr>"; sloupec = 0; while (sloupec < pocet_sloupcu) { // novy sloupec barva = color[(radek+sloupec)%2]; // vyhnu se podmince pro urceni barvy result += "<td style='width:20px;height:20px;background-color:"+barva +";'></td>"; sloupec++; } result += "</tr>"; radek++; } result +="</table>"; return result; } </script> použití je pak docela snadné <script type="text/javascript" > document.write(CreateTable(10, 20,"red","blue")); </script> nebo pomocí InnerHtml |
||
1Pupik1989 Profil |
#6 · Zasláno: 7. 3. 2011, 02:28:29 · Upravil/a: 1Pupik1989
Já bych to opravdu řešil v PHP, je to omnoho kratší než tu píšete :)
<form action='' method=get> Vodorovně: <input type=Text name=X><br> Svisle: <input type=Text name=Y><br> <input type=submit value='Načti'> </form> <?php if($_GET[X] and $_GET[Y]){ $Table="<table border=0 cellpadding=0 cellspacing=0>"; for($i=1;$i<=$_GET[Y];$i++){ $Table."<tr>"; for($j=1;$j<=$_GET[X];$j++){ $BG_color=(($i-$j)%2) ? "black" : "white"; $Table.="<td style='background-color:$BG_color;width:60px;height:60px'> </td>"; } $Table.="</tr>"; } $Table.="</table>"; echo $Table; } ?> |
||
Darker Profil |
#7 · Zasláno: 7. 3. 2011, 03:40:58
Navíc je řešení v PHP rychlejší na zobrazení.
|
||
kokolino Profil |
#8 · Zasláno: 7. 3. 2011, 06:47:16
1Pupik1989:
otázka mimo témy : ako by si zistil na, ktorom políčku sa nachádza figúrka ? |
||
1Pupik1989 Profil |
#9 · Zasláno: 7. 3. 2011, 07:11:46
kokolino:
Vytáhnu z SQL a zjistim jestli tam ta figurka není. |
||
kokolino Profil |
#10 · Zasláno: 7. 3. 2011, 10:00:27
1Pupik1989,
môžem ti napísať na icq, lebo robím niečo podobné a tiež tam riešim detekciu kvázi "figurky" na šachovnici, že by sme to prebrali kúsok viac |
||
1Pupik1989 Profil |
#11 · Zasláno: 7. 3. 2011, 12:05:47
Tak můžeš napsat, ale nevim jak bude čas, dělám svojí onlinovku a jsem teprve u mapy.
Pokud to chceš tak nějak v reálném času bez reloadu stránky, tak mrkni na Ajax + PHP a MySQL. Pokud ne, tak PHP + MySQL. |
||
zeldacz Profil |
#12 · Zasláno: 7. 3. 2011, 14:39:29
Fak všem moc díky
|
||
TomasJ Profil |
#13 · Zasláno: 7. 3. 2011, 16:37:08 · Upravil/a: TomasJ
meris:
Možná, že se se mýlím, ale mám dojem že šachovnice má stejný počet sloupců jako řádků... A raději upřednostňuji vytváření elementů javascriptem... |
||
zeldacz Profil |
#14 · Zasláno: 7. 3. 2011, 16:43:50
jj máš pravdu ale tohle je spíš skript na to aby se tam střídala ta černá a bílá
|
||
zeldacz Profil |
#15 · Zasláno: 7. 3. 2011, 16:45:42 · Upravil/a: zeldacz
1Pupik1989,
Jakou děláš onlinovku tu chcu vidět |
||
1Pupik1989 Profil |
#16 · Zasláno: 7. 3. 2011, 16:53:13
Ukazovat jí nebudu, až u finalovky. Teď jsem si dal oddych a udělal (už dokončuji) piškvorky online. Mě by docela zajímalo k čemu ta šachovnice bude? Že by šachy? Kdyžtak ti pošlu PM na tu hru.
|
||
meris Profil |
#17 · Zasláno: 7. 3. 2011, 18:07:22
TomasJ:
V tomto případě se mýlíš, jinak by ve formuláři nebyli políčka i pro řádky i pro sloupce. Vlastně to byl jediný důvod proč jsem psal své řešení. Ale obecně to tak bývá, proto jsem na to upozornil a opravil ve svém řešení. Já upřednostňuji jiné jazyky jak JS, takže jsem zvolil řešení, které jsem věděl, že v něm neudělám hloupou chybu (přece jen jedna hodina je jedna hodina :) ) a udělal to tak. Jinak je podle mého malinko správnější elementy vytvářet, a pak začlenit, než přístup vygenerovat kód a pak jej někam vložit, jak jsem to udělal já. I když v konečném důsledku se to chová stejně. |
||
Časová prodleva: 14 let
|
0