fampidirana
"Tsy natao ho an'ny lalao ny Linux!" - fehezanteny efa lany andro: ankehitriny dia misy lalao mahafinaritra maro manokana ho an'ity rafitra mahafinaritra ity. Na izany aza, indraindray ianao maniry zavatra manokana izay mety aminao... Ary nanapa-kevitra ny hamorona ity zavatra manokana ity aho.
fototra
Tsy hasehoko sy holazaiko ny kaody manontolo (tsy dia mahaliana loatra) - ireo hevi-dehibe ihany.
1. Toetra
Ny mari-pamantarana rehetra momba ny toetra dia voatanisa eto (fahasalamana, fiadiana, traikefa, sns.) Ny mahaliana dia ny sary sy ny fitarihana ny hetsika (izay tsy misy amin'izao fotoana izao).
int x = 5, y = 5;
hp = 100,
maxhp = 100,
dm = 20,
armor = 0,
xp = 0,
level = 0,
diff = 10, // ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ
pos = 0; // Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅
bool reg = 0,
Mdm = 0, // Π±ΠΎΠ½ΡΡΡ
ght = 0;
string color; // ΡΠ²Π΅Ρ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡΠ° ΡΠΎΡΡΠ°ΡΠ½ΠΈΡ Π³Π΅ΡΠΎΡ
void hero() // Π·Π΄Π΅ΡΡ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π³Π΅ΡΠΎΡ Π½Π° ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ (x ; y)
{
cout << "e[u " << "e[0;0H"; // Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΊΡΡΡΠΎΡΠ°, Π·Π°ΡΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠΌ
for (int i = 0; i <= x; i++)
cout << RIGHT; // ΠΌΠ°ΠΊΡΠΎΡ "e[1C"
for (int i = 0; i <= y; i++)
cout << DOWN; // ΠΌΠ°ΠΊΡΠΎΡ "e[1B"
cout << "e[s" << color << "β¬"; // ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΊΡΡΡΠΎΡΠ°
}
2. Fitantanana
Ny fomba famindra ny toetra dia efa mazava (xβ++, yβ++). Saingy mahaliana kokoa ny fanodinana kitendry:
char key;
char getkey()
{
system("stty raw");
key = getchar();
system("stty cooked");
return key;
}
Ny hany sisa tavela dia ny mametraka ny "karazana fanaraha-maso". Azonao atao izany amin'ny fampiasana switch, saingy halako izany.
switch(...) case .. : ... ; break
tsara kokoa ny toy izao
#define KEY if (key ==
#define I ){
#define J ;}else
void keys()
{
getkey();
KEY 'a' I x-- ; pos = 1 J
KEY......
}
Beauty! Loop miasa ary mihazakazaka manodidina ny efijery! Saingy somary masiaka ihany izany... Ary mitselatra ny cursor, ary ny litera... Hamboarinay izany!
//ΠΠΎ ΡΠΈΠΊΠ»Π°
cout << "e[?25l"; //ΠΎΡΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΡΡΡΠΎΡΠ°
system("stty -echo"); //ΠΎΡΠΊΠ»ΡΡΠ°Π΅ΠΌ ΡΡ
ΠΎ-Π²Π²ΠΎΠ΄
system("xset r rate 120 10"); // ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ Π·Π°Π΄Π΅ΡΠΆΠΊΡ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΏΠ»Π°Π²Π½ΡΡ
//ΠΠΎΡΠ»Π΅ ΡΠΈΠΊΠ»Π°
//-------Return_normal_system_settings--------
cout << "e[00m";
system("reset");
system("xset r rate 200 20");
Oay! Efa vonona ny iray isan-jato!
3. Ny tontolo manodidina antsika
Eto isika dia manao array ho an'ny x, y ampahany amin'izao tontolo izao ary ny ampahany (char o[N])
, mitovy amin'ny monsters sy bonus.
Mamorona fiasa world(int objx[N] .... objy[N] ... obj[N], ... objcolor[N])
amin'ny analogy amin'ny hero()
, fa miaraka amin'ny mari-pamantarana sy loop fanampiny amin'ny famoahana ny array... ho an'ny fialamboly, dia eo amin'ny sehatry ny fijery ihany no ataontsika (vis) (if (ox[k] < vis && oy[k]....))
Ankehitriny dia mameno ny efijery amin'ny ampahany amin'izao tontolo izao isika amin'ny alΓ lan'ny efitrano sy andalana tsotra sy amin'ny fomba tsotra, miaraka amin'izay koa dia miditra amin'ny fahavalo sy zavatra isika, ho an'ny kisendrasendra tanteraka tsy adinontsika. srand(time(NULL));
//------------------GENERATION---------------
void rooms()
{
for (int i = 0; i <= 50; i++)
{
px[i] = rand() % 115 + 2;
py[i] = rand() % 34 + 2;
pl[i] = rand() % 5 + 5;
ph[i] = rand() % 5 + 5;
if (px[i] + pl[i] > 117) px[i] = 50 - pl[i] / 2; else
if (px[i] < 2) px[i] = 50 - pl[i] / 2; else
if (py[i] < 1) py[i] = 15 - ph[i] / 2; else
if (py[i] + ph[i] > 37) py[i] = 15 - ph[i] / 2;
for (int j = 0; j <= i; j++)
{
while (px[i] > px[j] && px[i] < px[j] + pl[j])
(px[i]+pl[i]/2 >= 55) ? px[i]++ : px[i]-- ;
while (py[i] > py[j] && py[i] < py[j] + ph[j])
(py[i]+ph[i]/2 >= 18) ? py[i]++ : py[i]-- ;
while (px[i]+pl[i] > px[j] && px[i]+pl[i] < px[j] + pl[j])
(px[i]+pl[i]/2 >= 55) ? px[i]++ : px[i]-- ;
while (py[i]+ph[i] > py[j] && py[i]+ph[i] < py[j] + ph[j])
(py[i]+ph[i]/2 >= 18) ? py[i]++ : py[i]-- ;
}
for (int j = 0; j <= i; j++)
{
while (px[j] + pl[j] >= 116) px[j]-- ;
while (px[j] < 2) px[j]++ ;
while (py[j] < 1) py[j]++ ;
while (py[j] + ph[j] >= 37) py[j]-- ;
}
tx[i] = px[i]+10; ty[i] = py[i]-3;
if (i <= diff)
{
ex[i] = px[i];
ey[i] = py[i];
while (ex[i] < 10){ ex[i]++ ; epos[i] = 3 ;}
while (ey[i] < 10){ ey[i]++ ; epos[i] = 1 ;}
e[i] = evar[pl[i]];
ecolor[i] = "e[00me[31m";
edm[i] = edmvar[pl[i]];
ehp[i] = ehpvar[pl[i]];
exp[i] = expvar[pl[i]];
}
rect(px[i], py[i], pl[i], ph[i]);
}
}
void corrs()
{
int pc, px, py;
for (int i = 0; i <= 4; i++)
{
if (i < 2){
px = 3;
py = rand() % 33 + 3;
pc = 110;
line(px, py, pc, true);
line(px, py+1, pc, true);
} else {
px = rand() % 100 + 3;
py = 3;
pc = 33;
line(px, py, pc, false);
line(px+1, py, pc, false);
}
}
}
4. Fifandraisana
Ankehitriny dia mila miala amin'ny rindrina sy ny biby goavam-be isika ary mahazo tombony amin'ny entana.
Ny ankafizinay dia ho an'ny ary #famaritana
#define TOUCH if (x == ox[i] && y == oy[i] && pos ==
#define HIT x == ex[i] && y == ey[i] && pos ==
for (int i = 0; i <= n; i++)
{
if (i <= diff)
{
if (Mdm) ehp[i]-=2 ; // Π΅ΡΠ»ΠΈ Π±ΠΎΠ½ΡΡ "ΠΌΠ°ΡΡΠΎΠ²ΡΠΉ ΡΡΠΎΠ½" Π²ΠΊΠ»ΡΡΠ΅Π½
epos[i] = 0;
if (ex[i] < x+5 && ex[i] > x-5 &&
ey[i] < y+5 && ey[i] > y-5 )
{
edel(i); // ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°ΡΡΠ°Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠΈΠ²Π½ΠΈΠΊΠ°
if (ex[i] < x I ex[i]++ ; epos[i] = 1 J
if (ex[i] > x I ex[i]-- ; epos[i] = 2 J
if (ey[i] < y I ey[i]++ ; epos[i] = 3 J
if (ey[i] > y I ey[i]-- ; epos[i] = 4 ;}
}
for (int j = 0; j <= n; j++) // ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ±Π° ΡΠΎ ΡΡΠ΅Π½ΠΊΠ°ΠΌΠΈ
while (ex[i] == ox[j] && ey[i] == oy[j] || ex[i] == ex[j] && ey[i] == ey[j] && j != i)
{
if (epos[i] == 1) ex[i]-- ; else
if (epos[i] == 2) ex[i]++ ; else
if (epos[i] == 3) ey[i]-- ; else
if (epos[i] == 4) ey[i]++ ;
}
if (x == ex[i] && y == ey[i]) // "Π±ΠΈΡΠ²Π°"
{
if (ehp[i] > 1)
{
ehp[i] -= dm;
(edm[i] < armor) ?
hp -= 0 :
hp -= edm[i]-armor;
} else {
ex[i] = ey[i] = -1;
xp += exp[i];
ehp[i] = 12;
}
}
if (!ght) // Π΅ΡΠ»ΠΈ Π½Π΅ ΠΏΡΠΈΠ·ΡΠ°ΠΊ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ ΠΈΠ³ΡΠΎΠΊΠ° Ρ Π²ΡΠ°Π³Π°ΠΌΠΈ
{
if (HIT 1) y++ ;else
if (HIT 2) x-- ;else
if (HIT 3) y-- ;else
if (HIT 4) x++ ;
}
}
if (!ght) // ΡΠΎ ΠΆΠ΅, Π½ΠΎ ΡΠΎ ΡΡΠ΅Π½Π°ΠΌΠΈ
{
TOUCH 1 I y++ J
TOUCH 2 I x-- J
TOUCH 3 I y-- J
TOUCH 4 ) x++ ;
}
}
5.Menu
Asehoy fotsiny ny menio, manisa isa ireo entana, ary mampiasa getkey() hanomanana ny safidin'ny mpilalao. Manoratra ny sata mifehy ny toetra izahay, mampihatra ny menu leveling, manoratra ny backstory, ary mahazo ilay antsoina hoe "Subsoil".
famaranana
Ity dia zavatra tahaka izao. Afaka milalao izany ianao
$ sudo chmod +x Subsoil-1.0/Subsoil
$ Subsoil-1.0/Subsoil
, na, rehefa nahazo aingam-panahy, manoratra ho an'ny tenanao manokana izay tianao. Mampitandrina anao mialoha aho: tsy mora ny lalaoko!
rohy
Source: www.habr.com