Я недавно изучил массивы в Си++ (IDE - Turbo c++). Решил переделать свою игру, которую раньше написал без них. Переделал. Теперь игра работает не так, как надо. Суть игры: Подобрать смайликом все 5 бонусов. После переделки программы не выводятся бонусы. Игра работает в текстовом режыме. Code: #include <iostream.h> #include <conio.h> #include <stdlib.h> #include <dos.h> void main() { clrscr(); randomize(); int i=0; //в этой переменной хранится кол-во подобраных бонусов int bonus1=0,bonus2=0,bonus3=0,bonus4=0,bonus5=0; //заготовка переменных, для того, чтобы нелзя было подобрать много раз один и тот же бонус int bonus_x [4]; //массивы с кординатами вывода бонусов int bonus_y [4]; for (int k=0,l=0;k==5;k++,l++) { //заполнение массива числами bonus_x[k]=random(75); bonus_y[l]=random(25); } for (k=0,l=0;k==4;k++,l++) { //вывод бонусов (не работает) gotoxy (bonus_x [k],bonus_y [l]); textcolor (6); cprintf ("@"); } //------------------------------------------------------ int x=1,y=1; gotoxy(x,y); textcolor(6); cprintf(":)"); //------------------------------------------------------ for (;i<5;) { //цикл для увеличения счетчика при подборе бонуса gotoxy(74,1); textcolor(9); cout<<"<< "<<i<<" >>"<<endl; if (bonus1!=1) { //если bonus1 не равен единице, то if (x==bonus_x[0] && y==bonus_y[0]) { //если координаты смайлика совпали с координатвми бонуса i++; //прибавить к счетчику единицу bonus1=1; //приведенный левее код написае для того, чтобы один и тотже бонус нельзя было подбирать несколько раз. теперь bonus1 равен единице } } if (bonus2!=1) { if (x==bonus_x[1] && y==bonus_y[1]) { i++; bonus1=1; } } if (bonus3!=1) { if (x==bonus_x[2] && y==bonus_x[2]) { i++; bonus3=1; } } if (bonus4!=1) { if (x==bonus_x[3] && y==bonus_y[3]) { i++; bonus4=1; } } if (bonus5!=1) { if (x==bonus_x[4] && y==bonus_x[4]) { i++; bonus5=1; } } //------------------------------------------------------ getch(); //управление смайликом с помощью клавиш switch (getch()) { case 72: { if (y==1){ cout<<"\a\n"; //при столкновении с стенкой слышытся писк динамика break; } gotoxy(x,y); textcolor(0); cprintf(":)"); textcolor(6); gotoxy(x,y=y-1); cprintf(":)"); break; } case 75: { if (x==1) { cout<<"\a\n"; //при столкновении с стенкой слышытся писк динамика break; } gotoxy(x,y); textcolor(0); cprintf(":)"); gotoxy(x=x-1,y); textcolor(6); cprintf(":)"); break; } case 77: { if (x==79) { cout<<"\a\n"; //при столкновении с стенкой слышытся писк динамика break; } gotoxy(x,y); textcolor(0); cprintf(":)"); gotoxy(x=x+1,y); textcolor(6); cprintf(":)"); break; } case 80: { if (y==25){ cout<<"\a\n"; //при столкновении с стенкой слышытся писк динамика break; } gotoxy(x,y); textcolor(0); cprintf(":)"); gotoxy(x,y=y+1); textcolor(6); cprintf(":)"); break; } } } //------------------------------------------------------ gotoxy(74,1); //Вывод счетчика подобраных бонусов textcolor(9); cout<<"<< "<<i<<" >>"<<endl; //------------------------------------------------------ gotoxy(x,y); //вывод смайлика textcolor(1); cprintf(":)"); //------------------------------------------------------ gotoxy(x,y-1); //это появится вокруг смайлика textcolor(1); cprintf("||"); gotoxy(x,y+1); textcolor(1); cprintf("||"); gotoxy(x-2,y); textcolor(1); cprintf("=="); gotoxy(x+2,y); textcolor(1); cprintf("=="); //------------------------------------------------------ for (int q=34,w=1; w<26;w++) { //вывод бегущей строки gotoxy(q,w-1); textcolor (0); cprintf("ВЫ ВЫИГРАЛИ!"); gotoxy(q,w); textcolor(6); cprintf("ВЫ ВЫИГРАЛИ!"); gotoxy(q,w); delay (145); } textcolor(0); cprintf("ВЫ ВЫИГРАЛИ!"); }
for (int k=0;k==5;k++){ //заполнение массива числами bonus_x[k]=random(75); bonus_y[l]=random(25); } надо так: for (int k=0;k<5;k++) { bonus_x[k]=random(75); bonus_y[k]=random(25); } ------------------------------------ for (int k=0;k<5;k++) { gotoxy (bonus_x [k],bonus_y [k]); textcolor (6); cprintf ("@"); }
учись, без дебага плохо кодить ) можешь сделать ручной дебаг: временый вывод на экран значений переменных. например: Code: int n = random(50); printf("%d\n", n);