Erdogans Klucis Posted June 28, 2006 Report Share Posted June 28, 2006 Sveiki, ja kāds neguļ :) Taisu ar PHP spēli "desas" (krustiņi-nullītes). 15x15 rūtiņu matrica, rūtiņās neredzami attēli ar linkiem. Spēlējot tie nomainās ar divu dažādu krāsu lodītēm. Veidojas tabula, kur katrai lodītei viens ieraksts - kādā krāsā, kurā rindā (y poz.), kurā stabiņā (x poz). Viss ripo, bet algoritmā ar iegūtas "desas" noteikšanu laikam esmu aizgājis ne pa to ceļu. Mans variants: - sametu ekrānu 2 dimensiju masīvā; - ciklā braucu cauri masīvam, ņemot katru elementu (tjipa lodīti) un nosakot: vai tādas pašas krāsas lodīte ir pa labi? vai tādas pašas krāsas lodīte ir pa kreisi? vai tādas pašas krāsas lodīte ir augstāk? vai tādas pašas krāsas lodīte ir zemāk? vai tādas pašas krāsas lodīte ir augstāk pa labi (pa diagonāli)? vai tādas pašas krāsas lodīte ir augstāk pa kreisi (pa diagonāli)? vai tādas pašas krāsas lodīte ir zemāk pa labi (pa diagonāli)? vai tādas pašas krāsas lodīte ir zemāk pa labi (pa diagonāli)? - ja kāds no šiem noteikumiem izpildās, tālāk meklēju, vai tai pašā virzienā ir vēl. - ja tai pašā virzienā ir vēl, meklēju tālāk... ja ir vēl, meklēju tālāk... tālāk... kamēr ir VISMAZ 5 vienā rindā. Ja vienmēr būtu iespējama "desa" tikai no 5 lodītēm, problēmu nebutu: Man ir apmērm tā: if () { if (tur ir lodīte?) { if (aiz tās vēl ir?) { if (un aiz tās vēl?) { if (aha, četras ir, vai tur ir vēl viena?) { // "desa" ir gatava, spēle beigusies } } } } } Taču diemžēl iespējamas arī "desas" ar 6, 7, 8, 9 lodītēm. Tādas rodas no 0000 0000 0000 000 0000 00 0000 0 ja tukšajā vietā ieliek vienu 0 It kā jau strādā: kad tai garajā desā atrod vismaz 5 lodītes, paziņo, ka ir uzvara. Bet man vajag rezultātu ielikt tabulā, piefiksējot visas rūtiņas, kurās ir "desa". Bez tam es gribu arī tās tabulas rūtiņas, kurās ir "desa", pie uzvaras iekrāsot sarkanas. Tagad iznāk mocīties ar 2 problēmām: 1. Pie cik lodītēm vienā rindā spēle ir beigusies (tjipa cik ifi iekš ifa un kurš pasaka "beigas"? 2. Piecas lodītes garajā desā atrodamas vairākas reizes: 000000000 00000 <- -> Būšu pateicīgs par palīdzību. Ar manuāli esmu draugos. Taču algoritmu manuālī neatradīsi. P.S. Pilnu skripta tekstu nerakstu, ceru, ka savu problēmu izklāstīju pietiekami skaidri. Paldies par iespējamām atbildēm. Link to comment Share on other sites More sharing options...
v3rb0 Posted June 28, 2006 Report Share Posted June 28, 2006 (edited) -aiz vismaz 5 tak nav grūti paskatīties vai ir sestā, tālāk septītā utt. uzvara ir tad kad ir vairāk/vienāds ar pieci un nākošā lodīte nav vairs pareizā (vai ārpus laukuma) - katru reizi nevajag cauri visam masīvam, pietiek ja pārbaudīs pa pāriem uz abām pusēm - uz augšu+leju, pa labi +pa kreisi, pa diognāli kreisās apakšējās+ labās augšējās un pa diognāli no kreisās augšējās + labās apakšējās no pēdējās ieliktās lodītes. Edited June 28, 2006 by v3rb0 Link to comment Share on other sites More sharing options...
wudu Posted June 28, 2006 Report Share Posted June 28, 2006 cik es sapratu, tu manuaali raksti 5 if'us... taisi ar ciklu, piem, pa diagonaali: palielini x un y par 1 un skaties, ja ir lodiite, turpini ciklu, ja nee, tad ej aaraa. tad skaties, cik kopaa bijushas bumbinjas. ja 5 vai vairaak - uzvara. Link to comment Share on other sites More sharing options...
bubu Posted June 28, 2006 Report Share Posted June 28, 2006 es esmu taisījis ciklus ar četrām iterācijām - horizontāli, vertikāli, diagonāle /, diagonāle \. Katrā no tiem eju uz abām pusēm un skaitu vienādos kauliņus. Kopsumma ir arī tā, kas uzlikusies. Uz kuru pusi iet aprakstu ar masīvu: $dx = array(0, 1, 1, 1); $dy = array(1, 0, 1, -1); Tad katrā iterācijā tekošai korrdinātēm $x,$y pieskaitu $dx[$i],$dy[$i] vai, uz otru pusi ejot -$dx[$i], -$dy[$i]. Link to comment Share on other sites More sharing options...
Erdogans Klucis Posted July 6, 2006 Author Report Share Posted July 6, 2006 paldies visiem, kas palīdzēja. skripts gatavs Link to comment Share on other sites More sharing options...
v3rb0 Posted July 6, 2006 Report Share Posted July 6, 2006 kur var uzspēlēt lielās desas? :) Link to comment Share on other sites More sharing options...
Erdogans Klucis Posted July 6, 2006 Author Report Share Posted July 6, 2006 to v3rb0: man noderētu, ka notestē (un nokritizē) skaties savu PM Link to comment Share on other sites More sharing options...
Delfins Posted July 7, 2006 Report Share Posted July 7, 2006 Vai tad tā nesaucās "Lines"? Link to comment Share on other sites More sharing options...
Klez Posted July 7, 2006 Report Share Posted July 7, 2006 Erdogans Klucis iedod man ar patesteet :), iemet linku te pat :) atsauksmes buus :) Link to comment Share on other sites More sharing options...
Recommended Posts