
Mau oyamba
"Linux simasewera!" - Mawu achikale: tsopano pali masewera ambiri odabwitsa makamaka a dongosolo lodabwitsali. Komabe, nthawi zina mumafuna chinachake chapadera chomwe chingakugwirizane ndi inu ... Ndipo ndinaganiza zopanga chinthu chapadera ichi.
Maziko
Sindidzawonetsa ndikuwuza code yonse (siyosangalatsa kwambiri) - mfundo zazikulu zokha.
1.Khalidwe
Makhalidwe onse amatchulidwa apa (thanzi, zida, zochitika, ndi zina zotero) Chochititsa chidwi ndi kujambula ndi kayendetsedwe ka kayendetsedwe kake (komwe sikulipo).
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.Kuwongolera
Momwe mungasunthire mawonekedwe ndi zomveka kale (x—++, y—++). Koma kukonza kiyibodi ndikosangalatsa kwambiri:
char key;
char getkey()
{
system("stty raw");
key = getchar();
system("stty cooked");
return key;
}
Zomwe zatsala ndikukhazikitsa "omwe akuwongolera". Mutha kuchita izi pogwiritsa ntchito switch, koma ndimadana nazo.
switch(...) case .. : ... ; break bwino monga chonchi
#define KEY if (key ==
#define I ){
#define J ;}else
void keys()
{
getkey();
KEY 'a' I x-- ; pos = 1 J
KEY......
}
Kukongola! Lupu imagwira ntchito ndikuzungulira pazenera! Koma mwanjira ina ndizovuta ... Ndipo cholozera chimawalira, ndi zilembo ... Tidzakonza!
//До цикла
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");
Oo! Gawo limodzi lakonzeka!
3.Dziko lotizungulira
Apa tikupanga masanjidwe a x, y zidutswa za dziko ndi zidutswa zomwezo (char o[N]), chimodzimodzi kwa zoopsa ndi mabonasi.
Pangani ntchito world(int objx[N] .... objy[N] ... obj[N], ... objcolor[N]) mwa fanizo ndi hero(), koma ndi magawo ndi chipika chowonjezera chotulutsa mndandanda... (if (ox[k] < vis && oy[k]....))
Tsopano timadzaza chinsalucho ndi tinthu tating'ono ta dziko lapansi pogwiritsa ntchito zipinda zosavuta komanso zopanda pake, nthawi yomweyo timalowa adani ndi zinthu, mwachisawawa sitiiwala. 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.Kuyanjana
Tsopano tiyenera mwanjira ina kupewa kudutsa makoma ndi zilombo ndi kulandira mabonasi ku zinthu.
Zokonda zathu ndi #define
#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. Menyu
Timangowonetsa menyu, kuwerengera zinthu, ndikugwiritsa ntchito getkey() kukonza zomwe wosewera wasankha. Timalemba mawonekedwe amunthuyo, yambitsani menyu yowongolera, lembani mbiri yakumbuyo, ndipo timapeza zomwe ndidatcha "Subsoil".
Pomaliza
Ichi ndi chinachake chonga ichi. Mutha kuyisewera , kumasula ndikuyenda motere:
$ sudo chmod +x Subsoil-1.0/Subsoil$ Subsoil-1.0/Subsoil, kapena, pomaliza kuwuziridwa, dzilembeni nokha ulendo womwe mumakonda. Ndikukuchenjezani pasadakhale: masewera anga si ophweka!
Maulalo
, .
Source: www.habr.com
