Форум программистов, компьютерный форум CyberForum.ru

галаксиан - C++

Восстановить пароль Регистрация
 
LAtex
0 / 0 / 0
Регистрация: 01.10.2010
Сообщений: 24
28.11.2011, 18:06     галаксиан #1
Добрый вечер, есть задача: написать упрощенную версию игры типа старого доброго "Галаксиана" (скриншот из игры в аттаче - общий смысл из него понятен). Что у меня есть на данный момент так это юнит, который имеет возможность передвигаться в горизонтальной плоскости (при нажатии клавиши экран очищается, юнит перерисовывается с новыми координатами). Далее хотел сделать в верхней части экрана панель с информацией для пользователя и столкнулся с проблемой: при перемещении юнита, перерисовываться будет не только он, но и всё остальное (в частности пользовательская панель). Вопрос, можно ли каким-нибудь образом очищать экран только от конкретных объектов, т.е. как бы разделить бъекты по слоям?
Код ниже:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
 
class shouter{
public:
    shouter(int);
    void draw();
    void moveleft();
    void moveright();
private:
    int col, x, y;
};
 
shouter::shouter(int a){
    col=a;
    x=getmaxx()/2;
    y=getmaxy();
    setfillstyle(1,col);
    draw();
}
 
void shouter::draw(){
    bar(x-8,y-4,x-4,y);
    bar(x-12,y-16,x-8,y-4);
    bar(x-8,y-16,x,y-8);
    bar(x-20,y-16,x-16,y-4);
    bar(x-16,y-20,x-12,y-12);
    bar(x-12,y-24,x-8,y-16);
    bar(x-8,y-24,x,y-20);
    bar(x-4,y-20,x,y-16);
    bar(x-8,y-28,x-4,y-24);
    bar(x-12,y-32,x-8,y-28);
    bar(x+8,y-4,x+4,y);
    bar(x+12,y-16,x+8,y-4);
    bar(x+8,y-16,x,y-8);
    bar(x+20,y-16,x+16,y-4);
    bar(x+16,y-20,x+12,y-12);
    bar(x+12,y-24,x+8,y-16);
    bar(x+8,y-24,x,y-20);
    bar(x+4,y-20,x,y-16);
    bar(x+8,y-28,x+4,y-24);
    bar(x+12,y-32,x+8,y-28);
}
 
void shouter::moveleft(){
    if(x>=60){
        x-=40;
        cleardevice();
        draw(); }
}
 
void shouter::moveright(){
    if(x<=(getmaxx()-60)){
        x+=40;
        cleardevice();
        draw(); }
}
 
void main(void)
{
    int quit=0, graphdriver = DETECT, gmode;
    initgraph(&graphdriver,&gmode,"");
    shouter unit(10);
    do{
        switch(getch()){
            case 97: unit.moveleft(); break;
            case 100: unit.moveright(); break;
            case 113: quit=1;   }
    }while(quit==0);
    closegraph();
}
Изображения
 
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Bers
Заблокирован
28.11.2011, 18:10     галаксиан #2
Цитата Сообщение от LAtex Посмотреть сообщение
т.е. как бы разделить бъекты по слоям?
Ответ: разделять объекты по слоям.
LAtex
0 / 0 / 0
Регистрация: 01.10.2010
Сообщений: 24
28.11.2011, 18:17  [ТС]     галаксиан #3
Цитата Сообщение от Bers Посмотреть сообщение
Ответ: разделять объекты по слоям.
так, если вы имеете в виду страницы, то прошу помочь, т.к. разместить объекты на разных страницах не получилось - при переключении текущей страницы, отображаются либо первые, либо вторые.
Bers
Заблокирован
28.11.2011, 18:22     галаксиан #4
Не могу вам ничем помочь.
#include <graphics.h> древнейшая технология, которую ныне если и используют, то только в наших упоротых высших учебных заведениях.


Хотите делать game def - смотрите в сторону моральных движков, либо openGL (DirectX)
Yandex
Объявления
28.11.2011, 18:22     галаксиан
Ответ Создать тему
Опции темы

Текущее время: 13:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru