PHP týden Letní akce
Pouze tento týden sleva až 80 % na kurzy PHP. Lze kombinovat s akcí Letní slevy na prémiový obsah!
Brno? Vypsali jsme pro vás nové termíny školení Základů programování a OOP v Brně!
Avatar
Tomáš Roj
Člen
Avatar
Tomáš Roj:12. dubna 14:02

Ahoj všichni,

dělám jednu hru. Pokud hráč správně odpoví přičte se 150 bodů. Navázal jsem sql databázi na tuhle hru ale narazil jsem na jeden problém. Potřebuji udělat nějaký systém, který usoudí jestli je vhodné výsledek pustit do databáze (např. pokud je skore větší než všechny dosud v databázi atd.) zatím mám nastaveno že výsledek se pustí pokud je skore větší než 1000. To je ale blbost. Nejenže to pustí pokaždé (1000, 1150 ...) ale pokud všichni ostatní uživatélé budou mít také 1000 nebu de to high-score. Potřebuji tedy nějaký algoritmus nebo něco.

Odpovědět 12. dubna 14:02
„Lidé často nevědí, co chtějí, dokud jim to neukážete.“ - Steve Jobs
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:12. dubna 15:29

???

-- ulozi skore
INSERT INTO `tab_skore` (`id_user`, `id_hra`, `value`) VALUES (123, 456, 1111)
-- vybere top10 pro id_hra=456 (vyber vse, serad od nevetsiho podle sloupce value, vrat prvnich 10)
SELECT `id_user`, `value` FROM `tab_skore` WHERE `id_hra`=456 ORDER BY `value` DESC LIMIT 10  -- nebo LIMIT 0,10

Cili, ukladam vse. Pripadne muzes pouzit UPDATE / REPLACE, prepsat hracovo posl. skore, pokud uz v tabulce existuje.

Nevidim prinos v tom zapisovat jenom nejvyssi skore, pokud se hrac dostane do tabulky. Kdyz se tam nedostane, tak nemuze prekonavat osobni rekord. Tabulka bude mit velmi brzo takova skore, ze to novacky nebude bavit.

Samozrejme by to slo realizovat. Stejnym SELECT dotazem.

SELECT `id_user`, `value` FROM `tab_skore` WHERE `id_hra`=456 ORDER BY `value` DESC LIMIT 10

Hracovo skore porovnas s posledni hodnotou z dotazu.

Editováno 12. dubna 15:32
 
Nahoru Odpovědět 12. dubna 15:29
Avatar
Tomáš Roj
Člen
Avatar
Odpovídá na Peter Mlich
Tomáš Roj:12. dubna 15:48

Jak tedy udělám podmínku pokud chci aby se data do tabulky dostali pokud je(není) výsledek lepší než těch top 10?

Nahoru Odpovědět 12. dubna 15:48
„Lidé často nevědí, co chtějí, dokud jim to neukážete.“ - Steve Jobs
Avatar
Odpovídá na Tomáš Roj
Honza Prosecký:12. dubna 19:25

Cau, mozna spis udelej select top 10 from tabulka order by score desc nebo select * from tabulka order by score desc limit 10.

 
Nahoru Odpovědět 12. dubna 19:25
Avatar
Peter Mlich
Člen
Avatar
Odpovídá na Tomáš Roj
Peter Mlich:15. dubna 9:01

Nedelam ve VB.
Vytahl bych z db top10. Porovnal skore s posledni hodnotou. A bud bych pridal INSERT nebo nic.
Sice bude v sql tabulka neustale narustat, ale to nevadi, neni toho tolik a usetris si dalsi kod. Top10 sql dotaz ti vytahne vzdy spravnych top10.
A kdyby to vadilo, tak muzes jednou za cas (tyden) pridat DELETE.
Ale mozna, ze by bylo naopak vyhodou mit historii, videt, jak se ktery hrac zlepsuje nebo vedet, na ktere pozici je hrac v tabulce. A daji se tyto informace pouzit pro boj s hackery a podvodniky s podvodnymi programy. Muzes tak detekovat anomalie.

 
Nahoru Odpovědět 15. dubna 9:01
Avatar
Tomáš Roj
Člen
Avatar
Odpovídá na Peter Mlich
Tomáš Roj:15. dubna 9:43

Jo tak bylo by fajn kdyby jsme to mohli udělat třeba přes vs live share. Potřebuji už to mít. Kdyztak mi napiš na mruj emal - rojtomas@email.cz

Nahoru Odpovědět 15. dubna 9:43
„Lidé často nevědí, co chtějí, dokud jim to neukážete.“ - Steve Jobs
Avatar
plelovsky
Člen
Avatar
Odpovídá na Tomáš Roj
plelovsky:15. dubna 11:48

Co znamená "výsledek lepší než top 10"?
Nestačí vědět, jestli je výsledek vyšší než dosavadní existující výsledek?
Nejvyšší dosavadní výsledek:

SELECT MAX(score) FROM tabulka
 
Nahoru Odpovědět 15. dubna 11:48
Avatar
Tomáš Roj
Člen
Avatar
Odpovídá na plelovsky
Tomáš Roj:15. dubna 12:06

Potřebuji aby mi někdo přímo napsal kód deadline je blízko

Nahoru Odpovědět 15. dubna 12:06
„Lidé často nevědí, co chtějí, dokud jim to neukážete.“ - Steve Jobs
Avatar
Odpovídá na Tomáš Roj
Erik Šťastný:15. dubna 12:14

To máš dobré, kolik zaplatíš?

 
Nahoru Odpovědět 15. dubna 12:14
Avatar
Tomáš Roj
Člen
Avatar
Nahoru Odpovědět 15. dubna 12:24
„Lidé často nevědí, co chtějí, dokud jim to neukážete.“ - Steve Jobs
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.