Написал свою первую игру месяца 2 назад. Добавил массивы недавно. Теперь не работает

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Metall, 16 Jan 2008.

  1. Metall

    Metall Elder - Старейшина

    Joined:
    4 Jan 2008
    Messages:
    57
    Likes Received:
    10
    Reputations:
    0
    Я недавно изучил массивы в Си++ (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("ВЫ ВЫИГРАЛИ!");
    }
     
  2. razzzar

    razzzar Elder - Старейшина

    Joined:
    16 Jun 2007
    Messages:
    92
    Likes Received:
    75
    Reputations:
    5
    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 ("@");
    }
     
  3. Metall

    Metall Elder - Старейшина

    Joined:
    4 Jan 2008
    Messages:
    57
    Likes Received:
    10
    Reputations:
    0
    Спасибо, но это не помогло
     
  4. razzzar

    razzzar Elder - Старейшина

    Joined:
    16 Jun 2007
    Messages:
    92
    Likes Received:
    75
    Reputations:
    5
    а сообсвенно не работает? не выводится '@' ?
    ты в дебаге прогонял? в массив рандомятся числа?
     
  5. Metall

    Metall Elder - Старейшина

    Joined:
    4 Jan 2008
    Messages:
    57
    Likes Received:
    10
    Reputations:
    0
    Да, ты все правильно понял. В дебаге не проганял. Не умею.
     
  6. razzzar

    razzzar Elder - Старейшина

    Joined:
    16 Jun 2007
    Messages:
    92
    Likes Received:
    75
    Reputations:
    5
    учись, без дебага плохо кодить )
    можешь сделать ручной дебаг: временый вывод на экран значений переменных.
    например:
    Code:
    int n = random(50); 
    printf("%d\n", n);
    
     
Loading...
Similar Threads - Написал первую игру
  1. Peja
    Replies:
    0
    Views:
    2,971