Showing posts with label c. Show all posts
Showing posts with label c. Show all posts

Dohányozni tilos!

[8307] Dohányozni Tilos!
A feladat egy város egyszerűsített térképén bejelölni azokat a pontokat, ahol tilos a dohányzás. Adott a város cellákra osztott térképe, az hogy mely cellákban van kórház illetve iskola, valamint az, hogy ezek mekkora körzetében tilos a dohányzás. A feladat a térképen bejelölni azokat a cellákat amelyekben a kellő távolság hiánya miatt tilos a dohányzás. A város térképén minden cellát a középpontja azonosít.
Bemenet
A bemenetet a be.txt fájlból kell olvasni. A bemenet több sorból áll. Az első sorban két egész érték van szóközzel elválasztva, M és N (1 <= M,N <= 100), amik a térkép "magasságát” illetve "szélességét" jelentik, cellákban kifejezve. A második sor szintén két egész értéket tartalmaz: az első az iskolák (I), a második a kórházak (K) körüli tiltott zóna méretét tartalmazza (1 <= I,K <= 5). A 3. sorban egy egész szám van, ami megadja, hogy összesen hány iskola és kórház van a városban, majd soronként a sor elején egy ’I’ (iskola) vagy ’K’ (kórház) karakter, szóköz, majd két egész szám (S,O) szintén szóközzel
elválasztva, amik az adott intézmény sor, oszlop koordinátái (0 <= S < M, 0 <= O < N). A sorok és
oszlopok számozása 0-val kezdődik, a (0, 0) koordinátájú cella a bal felső cella. Egy cellában legfeljebb egy intézmény lehet.
Kimenet
A kimenetet a ki.txt fájlba kell írni. A kimenet pontosan M sor, minden sorban pontosan N darab ’.’, ’*’, ’I’ vagy ’K’ karakterrel. Az iskolák illetve kórházak celláit ’I’ illetve ’K’ karakterrel kell megjelölni.
Azokat a cellákat, ahol tilos a dohányzás, mert iskola vagy kórház található a megadott távolságon belül (légvonalban), a ’*’ karakterrel kell megjelölni. Azt a cellát, ahol szabad a dohányzás mert a közelben nincs intézmény egy ’.’ karakter jelöli. A (0, 0) koordinátájú cella a bal felső cella. A távolság számításánál az egyes cellák középpontjait kell figyelembe venni olyan módon, hogy a tiltás egy "zárt" távolságot jelent, azaz a határérték még tiltott zónának számít.
Példák
1. példa
Input
10 15
2 4
2
I 3 3
K 5 10
Output
...............
...*......*....
..***...*****..
.**I**.*******.
..***..*******.
...*..****K****
.......*******.
.......*******.
........*****..
..........*....

2
2. példa
Input
11 21
3 5
3
K 6 10
I 3 8
I 3 12
Output
........*...*........
......*********......
......*********......
.....***I***I***.....
......*********......
......*********......
.....*****K*****.....
......*********......
......*********......
......*********......
.......*******.......

3. példa
Input
10 20
1 1
2
I 1 1
K 8 18
Output
.*..................
*I*.................
.*..................
....................
....................
....................
....................
..................*.
.................*K*
..................*.



Megoldás:


#includeint main()
{
FILE *fb, *ki;
ki=fopen("ki.txt","w");
if(fb=fopen("be.txt","r")){
int cv1=0, cv2, cv3, o, s, i, k, szam, be=0;
fscanf(fb,"%d %d\n%d %d\n%d\n", &o, &s, &i, &k, &szam);
char ivk[szam+1];
int x[szam],y[szam], cv=0;
while(cv{
fscanf(fb,"%c %d %d\n", &ivk[cv], &x[cv], &y[cv]);
cv++;
}
cv=0;
fclose(fb);
if(o<=100 && o>=1 && s<=100 && s>=1 && i>=1 && i<=5 && k>=1 && k<=5){


char t[o+1][s+1], valami;
int b,j,f,l;



for(cv1=0;cv1 {
for(cv2=0;cv2 {
t[cv1][cv2]='.';
cv=0;
while(cv<=szam){
if(ivk[cv]=='K'){
if(((cv1-(x[cv]))-(cv2-(y[cv]))>=(-k)
&&(cv1-(x[cv]))-(cv2-(y[cv]))<=(k)
&&(cv1-(x[cv]))+(cv2-(y[cv]))>=(-k)
&&(cv1-(x[cv]))+(cv2-(y[cv]))<=(k)
)||((
cv1-(x[cv])>(-(k))
&&cv1-(x[cv])<(k)
&&cv2-(y[cv])<(k)
&&cv2-(y[cv])>(-(k)))))
{
if(k<4)
t[cv1][cv2]='*';
else if((((cv1-x[cv])+(cv2-y[cv])+(2*(k-1)))
&&
((cv1-x[cv])+(cv2-y[cv])-(2*(k-1)))
&&
(((cv1-x[cv])!=(k-1)&&(cv2-y[cv])!=(k-1))
||((cv1-x[cv])-(cv2-y[cv])+(2*(k-1))))
&&
(((cv1-x[cv])!=(k-1)&&(cv2-y[cv])!=(k-1))
||((cv1-x[cv])-(cv2-y[cv])-(2*(k-1))))))
t[cv1][cv2]='*';
}}
if(ivk[cv]=='I'){
if(((cv1-(x[cv]))-(cv2-(y[cv]))>=(-i)
&&(cv1-(x[cv]))-(cv2-(y[cv]))<=(i)
&&(cv1-(x[cv]))+(cv2-(y[cv]))>=(-i)
&&(cv1-(x[cv]))+(cv2-(y[cv]))<=(i)
)||((
cv1-(x[cv])>(-(i))
&&cv1-(x[cv])<(i)
&&cv2-(y[cv])<(i)
&&cv2-(y[cv])>(-(i)))))
{
if(i<4)
t[cv1][cv2]='*';
else if((((cv1-x[cv])+(cv2-y[cv])+(2*(i-1)))
&&
((cv1-x[cv])+(cv2-y[cv])-(2*(i-1)))
&&
(((cv1-x[cv])!=(i-1)&&(cv2-y[cv])!=(i-1))
||((cv1-x[cv])-(cv2-y[cv])+(2*(i-1))))
&&
(((cv1-x[cv])!=(i-1)&&(cv2-y[cv])!=(i-1))
||((cv1-x[cv])-(cv2-y[cv])-(2*(i-1))))))
t[cv1][cv2]='*';
}


}
cv++;
}
cv=0;
while(cv {
if((cv1==x[cv])&&(cv2==y[cv]))
{
t[cv1][cv2]=ivk[cv];
}
cv++;
}
}
}
for(cv1=0;cv1 {
for(cv2=0;cv2 {
fprintf(ki,"%c",t[cv1][cv2]);

}
fprintf(ki,"\n");
}


}}
else
fprintf(ki,"\n");
fclose(ki);
return 0;
}

Dwarf

Itt az új videó a játékról, javítottam az ugrást, esést, és végre van háttér is :)

Videók az eddigi játékaimról

Először láthatjátok a frissen felvett képeket a Dwarf játékomról, és a pongról is tettem be videót annak aki lusta letölteni a játékot vagy a forrást.

Dwarf


SDLPong
(ne feledjétek, a játékot és a forrást a letöltésekben megtalálhatjátok)

Sprite rajzolás+map editor

Teljes sebességgel nekikezdtem a sprite-ok rajzolásába, példaként felteszek egyet amit most csináltam:



Mivel a sprite-ok rajzolásában nem vagyok profi, így a játék QVGA(320x240) felbontásban fog "pompázni". Másik oka ennek hogy a régi p1 133 mhz-es laptopomon fejlesztek amin nagyobb felbontásban lehet hogy szaggatna.
Természetesen a pályaszerkesztőt is folyamatosan csinálom hozzá, halad szépen minden :)

Az első C nyelven írt játékom! :)

Elkészítettem az első C nyelven írt játékomat, egy pong-ot.
Egy kicsit optimalizálatlan, vagyis amikor ha a gép belassúl, vagy indításkor nem indul el elég gyorsan, és a labda és az ellenfél ütője képes kimenni a pályáról, de pár másodperc múlva visszatérnek.
Ez azért van mert amikor rájöttem az időzítés működésére, és egyszerre több sprite mozgatására, nemigen törődtem már ezzel a programmal inkább hozzáláttam egy 2D side scrolling játék készítéséhez :).

Természetesen közzé tettem a forráskódját is, akit érdekli nyugodtan lefordíthatja, javíthatja.

A letöltések:
:: SDLpong source - forrás
:: SDLpong játék - winrar

Programozás alapjai

Ez az első elérhető letöltés az oldalon, az egyetemen vetített 1046 oldalas programozás alapjai pdf formátumban. Szerzői két egyetemi tanár Dévényi Károly és Gergely Tamás.
Gergely Tamás volt aki levelezőn bennünket tanított.
Főként azért teszem fel ide ezt mert eddig tudtommal csak az egyetem FTP szerveréről(ftp.cab.u-szeged.hu) volt letölthető, és ahhoz nem férhet hozzá mindenki, csak a hallgatók.
Remélem nem gond ha felkerült, ha mégis valamely tanárúr olvassa ezt mosz kérem írjon egy levelet és azonnal leszedem.

A pdf-ben benne vannak az alap linux utasítások, az Ansi C programozási alapok, rendkívül részletesen és sok jó példaprogrammal leírva. Aki most kezd programozni annak ajánlott elolvasni, habár aki először látja biztosan elég nyersnek érzi. Másrészt összevissza ugrál a témák között(pl.: több programozásos példa van amely struktúrát használ, mégis eléggé a vége fele írja le annak a működését), így inkább más könyvvel párhuzamosan ajánlom olvasni. A másik hasznos kiegészítő lehetne benne egy tartalomjegyzék, ami nem készült hozzá mivel előadásokon szokták ezt vetíteni.

[ Letöltés itt ]

Ui.: Ráadásul pont holnap megyek vizsgázni(szóbelizni) pont ebből, aki még olvassa ezt kívánjon sok sok szerencsét.