Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Как заставить объект стрелять (http://forum.oszone.net/showthread.php?t=255026)

SAU-trade 27-02-2013 00:51 2099853

Как заставить объект стрелять
 
Здравствуйте... Пытаюсь написать игру типа Космической дуэли... Застопарился на стрельбе... Точнее как заставить свой объект стрелять... Подскажите как можно организовать данный процесс. Или где можно про это почитать?


Код:

#pragma once
#include <iostream>
#include <stdlib.h>
#include <Windows.h>

using namespace std;

class GameObject
{
public:
        int x, y; // Координаты расположения объекта
        int size; // Размер объекта
        char image; //Изображение объекта

        GameObject(void);
        GameObject(int x, int y, char img);
        GameObject(int x, int y, int s, char img);
        virtual void Draw();
        ~GameObject(void);
};

Код:

#include "GameObject.h"


GameObject::GameObject(void)
{
}

GameObject::GameObject(int x, int y, int s, char img)
{
        this-> x = x;
        this-> y = y;
        size = s;
        image = img;
}


GameObject::GameObject(int x, int y, char img)
{
        this-> x = x;
        this-> y = y;
        image = img;
}

void GameObject::Draw()
{
        HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE); //Дескриптор устройства стандартного вывода.
        COORD coord = {x, y}; //структура для опред позиции на плосости
        SetConsoleTextAttribute(h, FOREGROUND_BLUE | FOREGROUND_INTENSITY);
        SetConsoleCursorPosition(h, coord);
        cout << image;
}

GameObject::~GameObject(void)
{
}

Код:

#pragma once
#include "GameObject.h"

class Spacecraft : public GameObject
{
        int speedx;
        int speedy;
public:
        Spacecraft(void);
        Spacecraft(int, int, char);
        void Move();
        ~Spacecraft(void);
};

Код:

#include "Spacecraft.h"


Spacecraft::Spacecraft(void)
{
}

Spacecraft::Spacecraft(int x, int y, char img):GameObject(x, y, img)
{
}

Spacecraft::~Spacecraft(void)
{
}

Код:

#pragma once
#include "Spacecraft.h"

class Player_SC : public Spacecraft
{
public:
        Player_SC(void);
        Player_SC(int, int, char);
        void Draw();
        void Move();
        ~Player_SC(void);
};

Код:

#include "Player_SC.h"

Player_SC::Player_SC(void)
{
}

Player_SC::~Player_SC(void)
{
}

Player_SC::Player_SC(int x, int y, char img):Spacecraft(x, y, img)
{
}

void Player_SC::Draw()
{
        HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
        COORD coord = {x, y};
        SetConsoleTextAttribute(h, FOREGROUND_RED | FOREGROUND_INTENSITY);
        SetConsoleCursorPosition(h, coord);
        cout << image;
}

void Player_SC::Move()
{
        if(GetAsyncKeyState(VK_UP))
        {
                if(y>0)
                y--;       
        }
        if(GetAsyncKeyState(VK_LEFT))
        {
                if(x>0)
                x--;       
        }
        if(GetAsyncKeyState(VK_RIGHT))
        {
                if(x<79)
                x++;       
        }
        if(GetAsyncKeyState(VK_DOWN))
        {
                if(y<24)
                y++;       
        }
}


lxa85 27-02-2013 09:09 2100016

SAU-trade, ты бы хоть комментарии писал.
Стрелять, это св-во, такое же, как "Двигаться"
Цитата:

Цитата SAU-trade
Или где можно про это почитать? »

Tricks of the Windows Game Programming Gurus / Программирование игр для Windows (2003)
Tricks of the 3D Game Programming Gurus Advanced. 3D Graphics and Rasterization / Программирование трёхмерных игр для Windows. Советы профессионала по трёхмерной графике и растеризации.(2004)
То, что датировка достаточно поздняя делу не помешает. Базовое 2D и 3D будете знать.

XPEHOMETP 27-02-2013 12:38 2100166

Вполне возможно, что Вам не стоит изобретать велосипед, а надо просто слямзить процесс стреляния, как он расписан в более ранних играх типа шутеров. Гугление выводит на весьма полезную страничку в Википедии: там аж 7 штук игрух с открытым кодом. Хоть одна да точно подойдет за образец.


Время: 07:34.

Время: 07:34.
© OSzone.net 2001-