
Horudhac
"Linux maaha ciyaaraha!" - odhaah duugowday: hadda waxaa jira ciyaaro badan oo cajiib ah gaar ahaan nidaamkan cajiibka ah. Laakiin weli, mararka qaarkood waxaad dooneysaa wax gaar ah oo kugu habboon ... Oo waxaan go'aansaday inaan abuuro shaygan gaarka ah.
Basis
Ma muujin doono oo ma sheegi doono koodka oo dhan (ma ahan mid aad u xiiso badan) - kaliya qodobbada ugu muhiimsan.
1.Dabeecad
Dhammaan xudduudaha jilayaasha ayaa halkan ku taxan (caafimaadka, hubka, khibradda, iwm.) Xiisaha ayaa ah sawirka iyo jihada dhaqdhaqaaqa (taas oo aan hadda la heli karin).
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.Maamul
Sida loo dhaqaajiyo jilaa waa horeba cad (x—++, y—++). Laakiin habaynta kiiboodhka ayaa aad u xiiso badan:
char key;
char getkey()
{
system("stty raw");
key = getchar();
system("stty cooked");
return key;
}
Waxa hadhay oo dhan waa in la dejiyo "xuruufaha xakamaynta". Waxaad ku samayn kartaa adigoo isticmaalaya beddelka, laakiin waan necbahay.
switch(...) case .. : ... ; break ka fiican sidan
#define KEY if (key ==
#define I ){
#define J ;}else
void keys()
{
getkey();
KEY 'a' I x-- ; pos = 1 J
KEY......
}
Qurux! Loop shaqeeya oo ordi shaashadda! Laakiin si uun bay u yara adag tahay ... oo cursorku wuu ifayaa, iyo xarfaha ... Waan hagaajin doonaa!
//До цикла
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");
Waa yaab! Boqolkiiba hal waa diyaar!
3.Dunida inagu xeeran
Halkan waxaanu ku samaynaa habab x, y qaybaha aduunka iyo qaybaha laftooda (char o[N]), isku mid ah bahal iyo gunno.
Abuur shaqo world(int objx[N] .... objy[N] ... obj[N], ... objcolor[N]) iyada oo la barbar dhigo hero(), laakiin leh jaangooyooyin iyo loop dheeri ah oo lagu soo saarayo shaxanka... madadaalada, waxaan ku sawirnaa kaliya goobta muuqaalka (vis) (if (ox[k] < vis && oy[k]....))
Hadda waxaan ka buuxineynaa shaashadda qaybo ka mid ah adduunka anagoo adeegsanayna qaab fudud oo habraac ah qolalka iyo marinnada bannaanka ah, isla mar ahaantaana waxaan galnaa cadawga iyo walxaha, si aan kala sooc lahayn oo dhammaystiran ma iloobin 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.Isdhexgalka
Hadda waxaan u baahanahay inaan si uun uga fogaano inaan ka gudubno gidaarada iyo daanyeerka oo aan ka helno gunno alaabta.
Kuwa aan ugu jecelnahay waa oo #qeexee
#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
Waxaan si fudud u soo bandhignaa liiska, anagoo lambarinayna shayada, oo isticmaalna getkey() si aan uga baaraandegno doorashada ciyaaryahanka. Waxaan qornaa barta heerka jilaha, fulinta liiska simaynta, qor sheekada dambe, oo waxaan helnaa waxa aan ugu yeeray "Carro-hoose".
gunaanad
Tani waa wax sidan oo kale ah. Waad ciyaari kartaa , kala furfurida iyo u orda sidatan:
$ sudo chmod +x Subsoil-1.0/Subsoil$ Subsoil-1.0/Subsoil, ama, ugu dambeyntii waxyooday, naftaada u qor tacabur aad jeceshahay. Horaan kaaga digayaa: ciyaartaydu ma fududa!
Xiriirinta
, .
Source: www.habr.com
