Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Игра арканоид 
V
    Опции темы
Alexey91
Дата 20.4.2009, 17:13 (ссылка)   | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 18.9.2008

Репутация: нет
Всего: нет



Здравствуйте!

Дали тему - написать арканоид. Если кому не трудно, можете написать примерный алгоритм создания? 
PM   Вверх
zim22
Дата 20.4.2009, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69





--------------------
PM MAIL   Вверх
Alexey91
Дата 21.4.2009, 07:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 18.9.2008

Репутация: нет
Всего: нет



К сожалению не помогло, а вы думаете я до этого не пробовал, большинство найденных тем оставлены без ответа и пустые(
PM   Вверх
zim22
Дата 21.4.2009, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69



Цитата(Alexey91 @  21.4.2009,  07:36 Найти цитируемый пост)
а вы думаете я до этого не пробовал

да, так и думаю.

http://forum.vingrad.ru/forum/topic-120571.html
http://forum.vingrad.ru/forum/topic-5200.html
http://forum.vingrad.ru/forum/topic-134016...y1013510/0.html
http://forum.vingrad.ru/forum/topic-191137.html
http://forum.vingrad.ru/forum/topic-197048.html

Цитата(Alexey91 @  21.4.2009,  07:36 Найти цитируемый пост)
большинство найденных тем оставлены без ответа и пустые(

большинство - это не все.

Это сообщение отредактировал(а) zim22 - 21.4.2009, 08:37


--------------------
PM MAIL   Вверх
Alexey91
Дата 21.4.2009, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 18.9.2008

Репутация: нет
Всего: нет



Цитата

да, так и думаю.

Ну.. smile  Если хотите могу переслать свой журнал истории поиска, там есть даты. 


Ни в одной из этих ссылок не объясняется как происходит создание игры. Тем более, если быть конкретным, я задал вопрос в ветке с/с++. 
PM   Вверх
zim22
Дата 21.4.2009, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69



Цитата(Alexey91 @  21.4.2009,  08:49 Найти цитируемый пост)
Тем более, если быть конкретным, я задал вопрос в ветке с/с++. 

я открою для вас секрет. алгоритм арканоида одинаков. пусть он пишется хоть на бэйсик, хоть на Java



Это сообщение отредактировал(а) zim22 - 21.4.2009, 09:02


--------------------
PM MAIL   Вверх
Alexey91
Дата 21.4.2009, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 18.9.2008

Репутация: нет
Всего: нет



Хорошо, спасибо, секрет принимаю  smile 
Но в этих темах алгоритма все равно нет, зато есть частные вопросы
PM   Вверх
azesmcar
Дата 21.4.2009, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Alexey91

Алгоритм чего конкретно нужен? Шарик отбивается от стены по тем же углом под которым он ударился об нее, там примитивный алгоритм..вспомните школьные уроки, их вполне достаточно.
PM   Вверх
Alexey91
Дата 21.4.2009, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 18.9.2008

Репутация: нет
Всего: нет



Ясно, спасибо ;)
А как реализовать, чтобы кубик, в которой попал шарик исчезал? И потом шарик уже свободно перелетал через это пространство?
PM   Вверх
azesmcar
Дата 21.4.2009, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата

А как реализовать, чтобы кубик, в которой попал шарик исчезал? И потом шарик уже свободно перелетал через это пространство? 

Как реализовать на чем??? Это зависит от того как вы рисуете кубик, что вы используете (DirectX, OpenGL, GDI...)
PM   Вверх
mes
Дата 21.4.2009, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(Alexey91 @  21.4.2009,  08:47 Найти цитируемый пост)
А как реализовать, чтобы кубик, в которой попал шарик исчезал? И потом шарик уже свободно перелетал через это пространство? 

1. Заводите матрицу, каждый элемент которой и его положение  в оной  будет представлять кубик и относительную позицию на экране соответсвенно.
Заполняете матрицу нужными значениями и отрисовываете (значение может характеризовать как форму так и цвет кубика и возможно еще что нибудь)
Сама матрица тоже имеет координаты - тот прямоугольник в который "помещeны" все кубики.

2. При движение мячика проверяте пересекается ли его координаты, с координатами матрицы и если да, то с каким именно кубиком.
По значению этого кубика определяете тип взаимодействия и выполняете соответсвующая реакция для  мячика (изменение скорости, направления и т.д.) 
и кубика (изчез, надломался, не изменился)

3. В зависимости от способа рисования, отрисовывается либо вся сцена сразу, либо только изменный участок.




 



--------------------
PM MAIL WWW   Вверх
sdukshis
Дата 21.4.2009, 23:24 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 23.3.2009

Репутация: нет
Всего: 1



Полностью готовую реализацию арканоида Вы можете посмотреть в книга А.Ламонта "Программирование игр под Windows"
PM MAIL   Вверх
Alexey91
Дата 22.4.2009, 07:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 18.9.2008

Репутация: нет
Всего: нет



Там нет арканоида  smile 
PM   Вверх
Alexey91
Дата 29.4.2009, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 18.9.2008

Репутация: нет
Всего: нет



Возникла проблема, когда я отбибаю битой шарик по диагонали, то при соударении с квадратиком он не отталкивается обратно, а идет дальше.
Код

#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <dos.h>
#include <stdlib.h>

#define c15 textcolor(15);
#define col 30
#define row 4

int i,j,x=5, y=5, vx=1, vy=1, paddle=1,
    points=0, level=0, timet=0, blocks[row][col];

char a;
float s=1;

clock_t t1=0, t2=0; // timers



void arc(void)
{
 gotoxy(1,25);
 for(i=0; i<79; i++)
 printf(".");
 gotoxy(paddle,25);
 printf("!@@@!");
}

int ball(void)
{
 t2=clock();
 if((t2-t1)*(s/2) < timet) return 0;
 t1=clock();

 gotoxy(x,y); // koordinati sharika
 printf(" "); // zatiraet shleyf sharika

 if(x<=2 || x > 79) vx=-vx;
 if(y>23) // granica. SHAR DOHODIT DO NIZA
 {
  if(x==paddle) // otlet c bolshey skorostiyu s kraya ottolk. udaryatcya ob !xxxx
  {
   vy=-vy;
   vx=-vx;
   s++;

  }

  if(x==(paddle+1)) // x@xxx
  {
   vy=-vx;
   vx=-vx;

  }

  if(x==(paddle+2)) // xx@xx
  {
   if(vy==-vy) vy=vy;
   if(vy==vy) vy=-vy;
   vx=0;
  }

  if(x==(paddle+3)) // xxx@x
  {
   vy=-vy;
   vx=vx;
  }

  if(x==(paddle+4))// xxxx!
  {
   vy=-vy;
   vx=vx;
   s++;
  }

  if(x>(paddle+4) || x < paddle) return 1; // SHAR KRANTI
 }

 if(y<=2) vy=-vy; // OTTALKIVANIE OT POTOLKA

 x+=vx;
 y+=vy;

 gotoxy(x,y);
 printf("*");

 for(i=3; i < row+3; i++)
 {
  for(j=0; j < col; j++)
  {
   if(blocks[i-3][j]==1)
   {
    if(x==(10+j) && y==i)
    {
     points++;
     vy=-vy;
     blocks[i-3][j]=0;

    }
   }
  }
 }

 gotoxy(1,1); // INDIKATOR SBITIH KVADRATIKOV
 printf("Points: %d",points);
 return 0;
}

void putsq(void)
{
 textcolor(random(4*2)+1); cprintf("\376");
}

void squares(void)
{
 for(i=3; i < row+3; i++)
 {
  for(j=0; j < col; j++)
  {
   gotoxy(10+j*2,i);
   putsq();
  }
 }
}

void main()
{
 clrscr();
 for(i=0; i < row; i++)
 {
  for(j=0; j < col; j++)
  {
   blocks[i][j]=1;
  }
 }

 do
 {
  c15; cprintf("\nEnter difficulty 1<=diff<=4: ");
  scanf("%d",&level);
 }

 while(level < 1 || level > 4);
 clrscr();
 timet=level+1;
 squares();


 do
 {
  a=0;
  if(kbhit())
  {
   a=getch();
   if(a==77)
   {
    paddle++;

   }
   if(a==75)
   {
    paddle--;

   }
   if(paddle < 1) paddle=1;  // GRANICI DVIJENIYA ARKANOIDA
   if(paddle > 74) paddle=74;
   if(a == 32) break;  // BREAK NA PROBEL
   arc();
  }

  if(ball()) break;
 }
 while(1);

 if(points>100)
 {
  clrscr();
  c15; cprintf("\n\nYou are winner! :)");
  getch();
  return;
 }

 clrscr();
 c15; cprintf("Vi proigrali");

 getch();
}


Это сообщение отредактировал(а) Alexey91 - 29.4.2009, 22:34
PM   Вверх
mes
Дата 29.4.2009, 22:53 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(Alexey91 @  29.4.2009,  21:34 Найти цитируемый пост)
 
 vy=-vx;
 if(vy==-vy) vy=vy;
 if(vy==vy) vy=-vy;


не кажется ли Вам, что в каждой из трех приведенных строчек (и к сожалению не только в них) не все в порядке с логичностью ?  smile 




--------------------
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1224 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.