Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Моделирование, изометрия, photoshop, 3d редакторы
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 08.07.2017, 20:47   #1
dimaSlon
Форумчанин
 
Регистрация: 24.06.2017
Сообщений: 160
По умолчанию Реализация примитивных танков

У меня есть много танков вражеских и один мой. Я сам задаю их координаты. Мне нужно узнать какой танк мне найлегше убить. Тоесть каой тайк до меня найближе . Мой танк стриляет только по прямой(влево, вправо, наза, вперед).
Я написал как думаю но не праильно выводит танк который я могу убить((( Нужна ваша помощь
Код:
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <utility>
#include <cstdlib>
#include <algorithm>
 
struct Point2f
{
    Point2f();
    Point2f(float x, float y);
    ~Point2f() = default;
 
    float mX, mY;
};
 
Point2f::Point2f()
    : Point2f(0.0f, 0.0f)
{
}
 
Point2f::Point2f(float x, float y)
    : mX(x)
    , mY(y)
{
}
 
float distanceX(const Point2f& point1, const Point2f& point2)
{
    return point2.mX - point1.mX;
}
 
float distanceY(const Point2f& point1, const Point2f& point2)
{
    return point2.mY - point1.mY;
}
 
Point2f TanksGame(const Point2f& playerTank, std::vector<Point2f> otherTanks)
{
    float result = 0.0f;
    float temp = 0.0f;
    float tempX = 0.0f;
    float tempY = 0.0f;
    for (size_t index = 0; index < otherTanks.size(); ++index) 
    {
        
        tempX = distanceX(playerTank, otherTanks[index]);
        tempY = distanceY(playerTank, otherTanks[index]);
        if (tempX < tempY) 
            temp = tempX;
        else
            temp = tempY;
 
        if (result > temp)
            result = temp;
        return otherTanks[index];
    }
}
 
std::ostream& operator<< (std::ostream& os, const Point2f& point)
{
    os << point.mX << ", " << point.mY;
    return os;
}
 
int main()
{
    Point2f playerTank = Point2f(1.5f, 2.6f);
 
    Point2f otherTank1 = Point2f(3.9f, 4.2f);
    Point2f otherTank2 = Point2f(8.2f, 9.4f);
    Point2f otherTank3 = Point2f(9.9f, 4.2f);
    Point2f otherTank4 = Point2f(3.5f, 7.3f);
    Point2f otherTank5 = Point2f(8.8f, 2.6f);
    Point2f otherTank6 = Point2f(9.9f, 1.2f);
 
    std::vector<Point2f> tanks = {otherTank1, otherTank2 , otherTank3, otherTank4,otherTank5, otherTank6};
    Point2f tank = Point2f(0.0f, 0.0f);
    Point2f tankIndex = Point2f(0.0f, 0.0f);
    for (size_t index = 0; index < tanks.size(); ++index) 
    {
        tank = TanksGame(playerTank, tanks);
        tankIndex = tanks[index];
    }
        
    std::cout << "Tank" << "[" << tankIndex << "]" << " - " << "[" << tank << "]" << "\n";
    return 0;
}
dimaSlon вне форума   Ответить с цитированием
Старый 12.10.2017, 16:39   #2
dummy_user
Форумчанин
 
Аватар для dummy_user
 
Регистрация: 02.03.2013
Сообщений: 109
По умолчанию

Если X или Y танков совпадают и расстояние самое короткое из всех, то можно выстрелить.
dummy_user вне форума   Ответить с цитированием
Ответ
Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не инициализируются переменные не примитивных типов (Integer, Byte, andrewsavich Общие вопросы по Java, Java SE, Kotlin 2 07.07.2017 19:28
Реализация БД chocolat БД в Delphi 2 24.11.2012 12:15
Реализация на Си ГОСТ Р 34.10-94 юлька55 Фриланс 2 11.03.2012 10:58
реализация в QT navolo4ka Qt и кроссплатформенное программирование С/С++ 0 10.02.2012 15:39
Реализация stopvirus Общие вопросы Delphi 12 24.12.2010 20:44