Novator
Сообщений: 6
Оценки: 0
Присоединился: 2007-12-21 19:22:04.746666
|
Я недавно изучил массивы в Си++ (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++) { [color=#990000] //вывод бонусов (не работает)[/color]
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("ВЫ ВЫИГРАЛИ!");
}
|