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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ задачи C++ http://www.cyberforum.ru/cpp-beginners/thread394022.html
Пожалуйста помогите решить задачи!!!3 вариант
C++ Открытие файлов в 16-битном виде Доброго времени суток! У меня возникла проблемма: нужно написать программу для открытия (просмотра) файлов в 16 битном виде. Кажется, что задача не столь уж редкая, но тем не менее найти... http://www.cyberforum.ru/cpp-beginners/thread394021.html
C++ Цепочечные команды
Добрый день. Необходимо продемонстировать исполнение цепочечных команд на C++. Подскажите, в какую сторону копать? Продемонстрировать какие функции c++ можно?
C++ задача восточный календарь c++
Дан год.Вывести на экран название животного,символизирующего этот год по восточному календарю.
C++ оценку времени выполнения алгоритма на С++ http://www.cyberforum.ru/cpp-beginners/thread394008.html
оценить время работы алгоритма для матриц размерностей от 5 на 5 (верхний предел может быть больше), результаты измерений записать в файл на основании данных теста из файла вывести график...
C++ файл текстовый удалить из файла первую строку. файл любой подробнее

Показать сообщение отдельно
LAtex
0 / 0 / 0
Регистрация: 01.10.2010
Сообщений: 24

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

28.11.2011, 18:06. Просмотров 338. Ответов 3
Метки (Все метки)

Добрый вечер, есть задача: написать упрощенную версию игры типа старого доброго "Галаксиана" (скриншот из игры в аттаче - общий смысл из него понятен). Что у меня есть на данный момент так это юнит, который имеет возможность передвигаться в горизонтальной плоскости (при нажатии клавиши экран очищается, юнит перерисовывается с новыми координатами). Далее хотел сделать в верхней части экрана панель с информацией для пользователя и столкнулся с проблемой: при перемещении юнита, перерисовываться будет не только он, но и всё остальное (в частности пользовательская панель). Вопрос, можно ли каким-нибудь образом очищать экран только от конкретных объектов, т.е. как бы разделить бъекты по слоям?
Код ниже:
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();
}
0
Изображения
 
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru