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

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

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

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

У меня есть много танков вражеских и один мой. Я сам задаю их координаты. Мне нужно узнать какой танк мне найлегше убить. Тоесть каой тайк до меня найближе . Мой танк стриляет только по прямой(влево, вправо, наза, вперед).
Я написал как думаю но не праильно выводит танк который я могу убить((( Нужна ваша помощь
Код:

#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
Адрес: Сибирь
Сообщений: 105
Репутация: 27

skype: raw_2_raw
По умолчанию

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



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не инициализируются переменные не примитивных типов (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




14:28.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru