divas primitīvas spēles

Vieta, kur pastāstīt par savu topošo vai jau gatavo spēli, parādīt tās screenus un ziņot par citiem savu projektu jaunumiem
Post Reply
Message
Author
User avatar
kristapuciitis
Posts: 163
Joined: 03 Jun 2011, 14:22

divas primitīvas spēles

#1 Post by kristapuciitis » 18 Jun 2012, 17:49

Sveiki!
Es atkal ielikšu divas spēlītes. Es piekopu, manuprāt, salasāmāku koda stilu nekā iepriekš, ja varat, tad, lūdzu, novērtējiet to! =)
Attachments
Minesweeper.rar
(920.82 KiB) Downloaded 208 times
Memory.rar
(875.55 KiB) Downloaded 203 times
Gooby pls

User avatar
ArtisDz
Posts: 8
Joined: 20 Jun 2012, 18:00
Contact:

Re: divas primitīvas spēles

#2 Post by ArtisDz » 20 Jun 2012, 18:02

Varēji jau kādu ekrānšāviņu ielikt Ne-Windows OS lietotājiem.. :)
-Think Diffrent /*Steve J.*/

User avatar
zivs
Posts: 152
Joined: 21 Feb 2012, 12:15
Contact:

Re: divas primitīvas spēles

#3 Post by zivs » 20 Jun 2012, 20:01

Gribēju intereses pēc paļurināt, bet tā arī beigās atarhivējot saturu, tā arī nesapratu, uz ko es vispār skatos un kas ir jādara! :mrgreen:

User avatar
sunder
Posts: 18
Joined: 16 Feb 2012, 11:06

Re: divas primitīvas spēles

#4 Post by sunder » 20 Jun 2012, 20:16

Nu vienkāršas c++ spēlītes, kas tur ko nesaprast?
Atverot vaļā jau būtu jābut skaidram ko tu gribi - vai palaist (to var darīt laikam debug/,,,,.exe), vai papētīt pašu kodu( atverot .sln vai pa daļām .cpp un .h)
Ja būs vēlme un laiks ķerties pie c++, tad šie var būt pat noderīgi lai papētītu kā lietas strādā. Kods itkā viegli lasāms, tik būtu noderējuši vel teikumu gari komentāri katrai funcijai un tad jau pa visam labi būtu.

User avatar
Dee
Posts: 81
Joined: 20 Jan 2012, 20:35

Re: divas primitīvas spēles

#5 Post by Dee » 22 Jun 2012, 16:23

Kods izskatījās labs! Man tikai likās jocīgi, ka abas spēles notiek uz 2d grid, bet Level::mCells ir viendimensīju masīvs un Tu tam piekļūsti ar mCells[y * width + x]. Nu tas varbūt ir gaumes jautājums, taču man šķiet ka divdimensīju masīvu ir ērtāk izmantot šādā situācijā. (Cell mCells[width][height]; definē un ar mCells[x][y] piekļūst)

Un vēl pāris ieteikumi, ja nolemsi turpināt veidot šīs spēles:
*) Minesweeperā prasās iespēja spiežot abas peles pogas atvērt visus neatzīmētos lauciņus ap izvēlēto, ja vien ir pietiekami daudz atzīmētio lauciņu. (nu tā kā tas ir klasiskajā minesweeper)
*) Memory derētu vairāk krāsu, jo citādi ir pārāk viegli to iziet un nav interesanti.
*) Abās spēlēs sākās gljuki kad palielina vai samazina window.
*) Derētu kkāds menu kur var izvēlēties grūtības pakāpi utt.

P.S. Sākumā nevarēju palaist nevienu spēli, jo man trūka 2 dll ("msvcp100d.dll" un vel kkads msv...). Šo problēmu atrisināju dll nolādējot no http://www.dll-files.com.

User avatar
kristapuciitis
Posts: 163
Joined: 03 Jun 2011, 14:22

Re: divas primitīvas spēles

#6 Post by kristapuciitis » 23 Jun 2012, 13:19

Paldies par atbildēm!
Minesweeperā prasās iespēja spiežot abas peles pogas atvērt visus neatzīmētos lauciņus ap izvēlēto
Es par tādu iespēju pat nezināju! :D
Pie šīm spēlītēm vairs neplānoju atgriezties, tādēļ krāsas vairāk nepielikšu, bet tas nav sarežģīti.
Kad resize window un rodas stulbums- tā ir SFML problēma, gan jau ka var pašam to visu handle, bet nav vajadzības, citos multimedia API nav atļauts resize.
Par to, ka 2D grid tiek glabāts kā 1D masīvs- es tā esmu pieradis, un man tā ir ērtāk, jo, piem., minesweeperā līmeņu ģeneratorā, man vajadzētu arī rakstīt liekus statementus un uzglabāt 2 mainīgos x un y. Tagad ir tā:

Code: Select all

while (mCells[c].IsMine())
{
	c--;
	if (c == 0)
		c = mWidth * mHeight - 1;
}
Bet būtu tā:

Code: Select all

while (mCells[x][y].IsMine())
{
	x--;
	if (x == -1)
	{
		x = mWidth - 1;
		y--;
		if (y == -1)
		{
			y = mHeight - 1;
		}
	}
}
Vajag lieki rakstīt vairāk rindu, kā arī jādomā, kā nosaukt x un y, ja vienlaicīgi vajadzēs zināt vairākas rūtiņas.
Gooby pls

bubu
Guru
Guru
Posts: 398
Joined: 07 Dec 2010, 11:54

Re: divas primitīvas spēles

#7 Post by bubu » 23 Jun 2012, 23:54

kristapuciitis wrote:Paldies par atbildēm!
Kad resize window un rodas stulbums- tā ir SFML problēma, gan jau ka var pašam to visu handle, bet nav vajadzības, citos multimedia API nav atļauts resize.
SFML Window un RenderWindow klašu konstruktoriem ir style parametrs, kurā tu vari norādīt, ka negribi resaizojamu logu. Pēc noklusējuma šis parametrs pieņem Style::Default enuma vērtību, kas iekļauj loga resaizojamību. Ja tur padosi Style::Default & ~Style::Resize, tad logs nebūs resaizojams.

Izplatīt Debug buildus nav kūl. Tie nestrādās cilvēkiem, kuriem nav uzinstalēta tieši tāda pati Visual Studio versija ka tev. Labāk kompilēt un izplatīt Release buildu. Un tikai exe failu, nevis kaudzi ar obj un citiem studijas kompilētajiem failiem, lai ir mazāks izmērs.

Lai taupītu CPU laiku, un lieki nenosologotu CPU uz 100%, tev vajag:
1) window.PollEvent(Event) vietā vajag rakstīt window.WaitEvent(Event);
2) window.Clear/level.Draw/window.Display izsaukt tikai tad, ja ir noticis interesējošs events (peles nospiediens)
Alternatīvi - var ieslēgt vsync: window.setVerticalSyncEnabled(true);

Citādi - kā palaižu tavu mainswīperi, tā mans laoptops sāk griezt ventilatorus uz pilnu jaudu.

Post Reply

Return to “Tavi projekti / Your projects”