ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Написал свою первую игру месяца 2 назад. Добавил массивы недавно. Теперь не работает
  #1  
Старый 16.01.2008, 23:29
Аватар для Metall
Metall
Познающий
Регистрация: 04.01.2008
Сообщений: 62
Провел на форуме:
490685

Репутация: 30
Отправить сообщение для Metall с помощью ICQ
По умолчанию Написал свою первую игру месяца 2 назад. Добавил массивы недавно. Теперь не работает

Я недавно изучил массивы в Си++ (IDE - Turbo c++). Решил переделать свою игру, которую раньше написал без них. Переделал. Теперь игра работает не так, как надо.
Суть игры:
Подобрать смайликом все 5 бонусов.
После переделки программы не выводятся бонусы. Игра работает в текстовом режыме.

Код:
#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  
Старый 17.01.2008, 00:25
Аватар для razzzar
razzzar
Участник форума
Регистрация: 16.06.2007
Сообщений: 107
Провел на форуме:
725870

Репутация: 208
По умолчанию

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  
Старый 17.01.2008, 00:34
Аватар для Metall
Metall
Познающий
Регистрация: 04.01.2008
Сообщений: 62
Провел на форуме:
490685

Репутация: 30
Отправить сообщение для Metall с помощью ICQ
По умолчанию

Спасибо, но это не помогло
 
Ответить с цитированием

  #4  
Старый 17.01.2008, 00:37
Аватар для razzzar
razzzar
Участник форума
Регистрация: 16.06.2007
Сообщений: 107
Провел на форуме:
725870

Репутация: 208
По умолчанию

а сообсвенно не работает? не выводится '@' ?
ты в дебаге прогонял? в массив рандомятся числа?
 
Ответить с цитированием

  #5  
Старый 17.01.2008, 02:22
Аватар для Metall
Metall
Познающий
Регистрация: 04.01.2008
Сообщений: 62
Провел на форуме:
490685

Репутация: 30
Отправить сообщение для Metall с помощью ICQ
По умолчанию

Цитата:
Сообщение от razzzar  
а сообсвенно не работает? не выводится '@' ?
ты в дебаге прогонял? в массив рандомятся числа?
Да, ты все правильно понял. В дебаге не проганял. Не умею.
 
Ответить с цитированием

  #6  
Старый 17.01.2008, 02:26
Аватар для razzzar
razzzar
Участник форума
Регистрация: 16.06.2007
Сообщений: 107
Провел на форуме:
725870

Репутация: 208
По умолчанию

учись, без дебага плохо кодить )
можешь сделать ручной дебаг: временый вывод на экран значений переменных.
например:
Код:
int n = random(50); 
printf("%d\n", n);
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ