Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.04.2018, 15:58   #1
Dormin
Пользователь
 
Регистрация: 14.04.2018
Сообщений: 13
Вопрос Есть ли у кого-то калейдоскоп на с++?

Доброго времени суток. Мне хотелось бы посмотреть примеры электронного калейдоскопа на с++ который должен выглядеть следующим образом: в центре правильный шестиугольник разделённый на правильные треугольники. Один из треугольников рассекается случайным образом несколькими линиями, образовавшиеся фигуры красятся в случайные цвета, после изображение в каждом следующем треугольнике, по часовой стрелке, выходит симметричным отражением к общей стороне обоих треугольников.

В интернете подобного очень-очень мало, потому я и решил обратиться сюда

У меня есть немного наработок. Но один минус, это то, что треугольник делится не произвольно, а только на 4 меньших треугольника. Второй минус - у меня не получается настроить SFML для роботы калейдоскопа. После всех страданий с настройкой я застрял на ошибке:
1>------ Сборка начата: проект: Калейдоскоп РГР, Конфигурация: Release Win32 ------
1>sfml-graphics-s.lib(RenderStates.cpp.obj) : fatal error LNK1112: тип компьютера модуля "x64" противоречит типу целевого компьютера "X86"
========== Сборка: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Код:
#include <iostream>
#include <ctime>
#include <SFML/Graphics.hpp>
 
 
 
using namespace sf;
CircleShape t1(50, 3);
CircleShape t2(50, 3);
CircleShape t3(50, 3);
CircleShape t4(50, 3);
CircleShape t5(50, 3);
 
CircleShape t6(50, 3);
CircleShape t7(50, 3);
CircleShape t8(50, 3);
CircleShape t9(50, 3);
CircleShape t10(50, 3);
CircleShape t11(50, 3);
CircleShape t12(50, 3);
 
CircleShape t13(50, 3);
CircleShape t14(50, 3);
CircleShape t15(50, 3);
CircleShape t16(50, 3);
CircleShape t17(50, 3);
CircleShape t18(50, 3);
CircleShape t19(50, 3);
 
CircleShape t20(50, 3);
CircleShape t21(50, 3);
CircleShape t22(50, 3);
CircleShape t23(50, 3);
CircleShape t24(50, 3);
 
int main(void)
{
 
    Color color1[2] = { Color::White, Color::Red };
    Color color2[2] = { Color::Green, Color::Blue };
    Color color3[2] = { Color::Magenta, Color::Cyan };
 
    srand((unsigned)time(NULL));
    Color c1 = (color1[rand() % 2]);
    Color c2 = (color2[rand() % 2]);
    Color c3 = (color3[rand() % 2]);
 
    t1.setFillColor(c1);
    t1.setPosition(110, 10);
 
    t2.setFillColor(c1);
    t2.setPosition(260, 85);
    t2.rotate(180);
 
    t3.setFillColor(c2);
    t3.setPosition(210, 10);
 
    t4.setFillColor(c1);
    t4.setPosition(360, 85);
    t4.rotate(180);
 
    t5.setFillColor(c1);
    t5.setPosition(310, 10);
 
    //
 
    t6.setFillColor(c1);
    t6.setPosition(60, 92);
 
    t7.setFillColor(c2);
    t7.setPosition(210, 165);
    t7.rotate(180);
 
    t8.setFillColor(c3);
    t8.setPosition(160, 92);
 
    t9.setFillColor(c3);
    t9.setPosition(310, 165);
    t9.rotate(180);
 
    t10.setFillColor(c3);
    t10.setPosition(260, 92);
 
    t11.setFillColor(c2);
    t11.setPosition(410, 165);
    t11.rotate(180);
 
    t12.setFillColor(c1);
    t12.setPosition(360, 92);
 
    //
 
    t13.setFillColor(c1);
    t13.setPosition(160, 247);
    t13.rotate(180);
 
    t14.setFillColor(c2);
    t14.setPosition(110, 172);
 
    t15.setFillColor(c3);
    t15.setPosition(260, 247);
    t15.rotate(180);
 
    t16.setFillColor(c3);
    t16.setPosition(210, 172);
 
    t17.setFillColor(c3);
    t17.setPosition(360, 247);
    t17.rotate(180);
 
    t18.setFillColor(c2);
    t18.setPosition(310, 172);
 
    t19.setFillColor(c1);
    t19.setPosition(460, 247);
    t19.rotate(180);
 
    //
 
    t20.setFillColor(c1);
    t20.setPosition(210, 327);
    t20.rotate(180);
 
    t21.setFillColor(c1);
    t21.setPosition(160, 252);
 
    t22.setFillColor(c2);
    t22.setPosition(310, 327);
    t22.rotate(180);
 
    t23.setFillColor(c1);
    t23.setPosition(260, 252);
 
    t24.setFillColor(c1);
    t24.setPosition(410, 327);
    t24.rotate(180);
 
 
    RenderWindow win(VideoMode(500, 500), "RGR");
    while (win.isOpen())
    {
        Event event;
        while (win.pollEvent(event))
        {
            if (event.type == Event::Closed)
                win.close();
        }
        win.clear();
 
        win.draw(t1);
        win.draw(t2);
        win.draw(t3);
        win.draw(t4);
        win.draw(t5);
        win.draw(t6);
 
        win.draw(t7);
        win.draw(t8);
        win.draw(t9);
        win.draw(t10);
        win.draw(t11);
        win.draw(t12);
 
        win.draw(t13);
        win.draw(t14);
        win.draw(t15);
        win.draw(t16);
        win.draw(t17);
        win.draw(t18);
        win.draw(t19);
 
        win.draw(t20);
        win.draw(t21);
        win.draw(t22);
        win.draw(t23);
        win.draw(t24);
 
        win.display();
 
 
    }
 
 
    return 0;
}
Заранее спасибо
Dormin вне форума Ответить с цитированием
Старый 30.04.2018, 15:59   #2
Dormin
Пользователь
 
Регистрация: 14.04.2018
Сообщений: 13
По умолчанию

А это я нашел в интернете, но в студии даже кнопки запуска неактивны
Код:
#include <math.h>
#include <mem.h>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
 
#include "fixed.h"
#include "caleid.h"
 
#define _border(x)  //{ outp( 0x3c0, 32 | 0x11 ); outp( 0x3c0, x ); }
 
sPoint  PointList[ MAXPOINT ];
 
long    TrigTable[ 320 ];
uchar   Buffer[ 40*200 ];
uchar   Palette[ 16*3 ];
 
void    main    ( void )
{
        int     x,i;
        uint    plane = 0x0100;
        int     Angle=0, AngleSpd=0, AngleAcc=1;
 
        // Make trigtable
        for( x=0; x<320; x++ )
            TrigTable[ x ] = ( long )( (double)65536.0 * sin( ( ( double) x*3.14159 )/128.0 ) );
 
        // Clear lists
        for( x=0; x<MAXPOINT; x++ )
        {
            PointList[ x ].x = PointList[ x ].y = 0;
            //PointList[ x ].x = ( long )( ( rand() % 140 ) - 70 ) << 16;
            //PointList[ x ].y = ( long )( ( rand() % 140 ) - 70 ) << 16;
        }
 
        _asm    mov ax, 0Dh
        _asm    int 10h
 
        // Remap palette
        MakePalette( 63, 63, 63 );
 
        inp( 0x3da );
        for( x=0; x<16; x++ )
        {
            outp( 0x3c0, x );
            outp( 0x3c0, x );
        }
        outp( 0x3c0, 32 );
 
        Remap();
 
        // Clear buffer
        memset( Buffer, 0, 40*200 );
 
        while( !kbhit() )
        {
            while( !( inp( 0x3da ) & 8 ) );
            _border( 15 );
 
            outpw( 0x3c4, plane | 2 );
            if( plane == 0x0400 )
                plane = 0x0100;
            else
                plane <<= 1;
 
            _border( 7 );
 
            CopyAndClear();
 
            _border( 3 );
 
            RotateAndMakeBuffer( ( (Angle>>4) + 128 ) & 255 );
            Angle += AngleSpd;
            AngleSpd += AngleAcc;
            if( ( AngleSpd >= ( 50 + (rand()&31) ) ) || ( AngleSpd <= ( -50 - (rand()&31) ) ) )
            {
                AngleAcc = -AngleAcc;
                memset( Palette, 63, 16*3 );
 
                /*
                while( !( inp( 0x3da ) & 8 ) );
                Remap();
 
                MakePalette( (rand()&31) + 31, (rand()&31) + 31, (rand()&31) + 1 );
                for( i=0; i<2; i++ )
                {
                    while( inp( 0x3da ) & 8 );
                    while( !( inp( 0x3da ) & 8 ) );
                }
                Remap();
                */
            }
 
            _border( 1 );
 
            UpdateList();
            UpdateList();
            UpdateList();
 
            _border( 0 );
 
        }
 
        getch();
 
        _asm    mov ax, 3h
        _asm    int 10h
 
        puts( " - CaLEiDoSCoPE - CoDe: PiX / NeMeSiS - (c) 1994 NeMeSiS production\n" );
}
 
/*
void    CopyAndClear    ( void )
{
    _fmemcpy( ( void far * )0xA0000000L, Buffer, 40*200 );
    memset( Buffer, 0, 40*200 );
}
*/
 
uchar   mask[ 8 ] = { 128, 64, 32, 16, 8, 4, 2, 1 };
 
void    MakeBuffer      ( void )
{
    int     x;
    uint    offset;
 
    for( x=0; x<MAXPOINT; x++ )
    {
        offset = ( ( PointList[ x ].y >> 16 ) + 100 ) * 320 + ( ( PointList[ x ].x >> 16 ) + 160 );
        Buffer[ offset >> 3 ] |= mask[ offset & 7 ];
    }
}
 
/*
void    RotateAndMakeBuffer     ( int Angle )
{
    int     i;
    long    xt, yt;
    uint    offset;
 
    for( i=0; i<MAXPOINT; i++ )
    {
        xt = fixed_mul( TrigTable[ Angle+64 ] , PointList[ i ].x ) -
             fixed_mul( TrigTable[ Angle ] , PointList[ i ].y );
 
        yt = fixed_mul( TrigTable[ Angle+64 ] , PointList[ i ].y ) +
             fixed_mul( TrigTable[ Angle ] , PointList[ i ].x );
 
        offset = ( ( yt >> 16 ) + 100 ) * 320 + ( ( xt >> 16 ) + 160 );
        Buffer[ offset >> 3 ] |= mask[ offset & 7 ];
    }
}
*/
 
void    RotateList      ( int angle )
{
    int     i;
    long    xt, yt;
 
    for( i=0; i<MAXPOINT; i++ )
    {
        xt = fixed_mul( TrigTable[ angle+64 ] , PointList[ i ].x ) -
             fixed_mul( TrigTable[ angle ] , PointList[ i ].y );
 
        yt = fixed_mul( TrigTable[ angle+64 ] , PointList[ i ].y ) +
             fixed_mul( TrigTable[ angle ] , PointList[ i ].x );
 
        PointList[ i ].x = xt;
        PointList[ i ].y = yt;
    }
}
 
int     UpIndex = 0;
long    UpAng = 0, UpAngSpd = 254;
long    UpRad = 0, UpRadSpd = 1, UpRadAcc = 1;
 
void    UpdateList      ( void )
{
    PointList[ UpIndex ].x = ( TrigTable[ ( ( UpAng >> 3 ) & 255 ) ] * UpRad ) >> 4;
    PointList[ UpIndex ].y = ( TrigTable[ ( ( UpAng >> 3 ) & 255 ) + 64 ] * UpRad ) >> 4;
 
    if( ++UpIndex == MAXPOINT )
    {
        UpIndex = 0;
        UpAngSpd = rand() ;
        UpRad = 0;
        UpRadAcc = rand()&3;
        UpRadSpd = rand()&7;
    }
 
    UpAng += UpAngSpd;
    UpRad += UpRadSpd;
 
    UpRadSpd += UpRadAcc;
 
    if( ( UpRadSpd <= -40 ) || ( UpRadSpd >= 39 ) )
        UpRadAcc = -UpRadAcc;
 
    if( UpRad > (100<<4) )
    {
        UpRad = (100<<4);
        UpRadSpd = -UpRadSpd;
    }
    else
    if( UpRad < (-100<<4) )
    {
        UpRad = (-100<<4);
        UpRadSpd = -UpRadSpd;
    }
 
}
 
void    MakePalette     ( int r, int g, int b )
{
    int     x;
    int     lev;
 
    for( x=0; x<16; x++ )
    {
        lev=0;
 
        if( x & 1 )
            lev++;
        if( x & 2 )
            lev++;
        if( x & 4 )
            lev++;
        /*
        if( x & 8 )
            lev++;
        */
 
        Palette[ x*3 + 0 ] = (lev*r)/3;
        Palette[ x*3 + 1 ] = (lev*g)/3;
        Palette[ x*3 + 2 ] = (lev*b)/3;
    }
}
Dormin вне форума Ответить с цитированием
Старый 30.04.2018, 19:47   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Цитата:
Сообщение от Dormin Посмотреть сообщение
1>sfml-graphics-s.lib(RenderStates.cpp.obj) : fatal error LNK1112: тип компьютера модуля "x64" противоречит типу целевого компьютера "X86"
Ну ведь даже на родном написано, без всяких инглешей. У вас либа под х64, а собираете под х32.
p51x вне форума Ответить с цитированием
Старый 01.05.2018, 15:34   #4
Dormin
Пользователь
 
Регистрация: 14.04.2018
Сообщений: 13
По умолчанию

я поменял файлы и теперь вот что пишет
1>------ Сборка начата: проект: Калейдоскоп РГР, Конфигурация: Release Win32 ------
1>sfml-window-s.lib(Window.cpp.obj) : error LNK2038: обнаружено несоответствие для "RuntimeLibrary": значение "MD_DynamicRelease" не соответствует значению "MT_StaticRelease" в caleid.obj
1>sfml-window-s.lib(VideoMode.cpp.obj) : error LNK2038: обнаружено несоответствие для "RuntimeLibrary": значение "MD_DynamicRelease" не соответствует значению "MT_StaticRelease" в caleid.obj
1>sfml-window-s.lib(GlContext.cpp.obj) : error LNK2038: обнаружено несоответствие для "RuntimeLibrary": значение "MD_DynamicRelease" не соответствует значению "MT_StaticRelease" в caleid.obj
1>sfml-window-s.lib(WindowImpl.cpp.obj) : error LNK2038: обнаружено несоответствие для "RuntimeLibrary": значение "MD_DynamicRelease" не соответствует значению "MT_StaticRelease" в caleid.obj
1>sfml-window-s.lib(VideoModeImpl.cpp.obj) : error LNK2038: обнаружено несоответствие для "RuntimeLibrary": значение "MD_DynamicRelease" не соответствует значению "MT_StaticRelease" в caleid.obj
1>sfml-window-s.lib(Context.cpp.obj) : error LNK2038: обнаружено несоответствие для "RuntimeLibrary": значение "MD_DynamicRelease" не соответствует значению "MT_StaticRelease" в caleid.obj
1>sfml-window-s.lib(WglContext.cpp.obj) : error LNK2038: обнаружено несоответствие для "RuntimeLibrary": значение "MD_DynamicRelease" не соответствует значению "MT_StaticRelease" в caleid.obj
1>sfml-window-s.lib(JoystickManager.cpp.obj) : error LNK2038: обнаружено несоответствие для "RuntimeLibrary": значение "MD_DynamicRelease" не соответствует значению "MT_StaticRelease" в caleid.obj
1>sfml-window-s.lib(SensorManager.cpp.obj) : error LNK2038: обнаружено несоответствие для "RuntimeLibrary": значение "MD_DynamicRelease" не соответствует значению "MT_StaticRelease" в caleid.obj
1>sfml-window-s.lib(WindowImplWin32.cpp.obj) : error LNK2038: обнаружено несоответствие для "RuntimeLibrary": значение "MD_DynamicRelease" не соответствует значению "MT_StaticRelease" в caleid.obj
1>sfml-window-s.lib(WglExtensions.cpp.obj) : error LNK2038: обнаружено несоответствие для "RuntimeLibrary": значение "MD_DynamicRelease" не соответствует значению "MT_StaticRelease" в caleid.obj
1>sfml-window-s.lib(Joystick.cpp.obj) : error LNK2038: обнаружено несоответствие для "RuntimeLibrary": значение "MD_DynamicRelease" не соответствует значению "MT_StaticRelease" в caleid.obj
1>sfml-window-s.lib(JoystickImpl.cpp.obj) : error LNK2038: обнаружено несоответствие для "RuntimeLibrary": значение "MD_DynamicRelease" не соответствует значению "MT_StaticRelease" в caleid.obj
1>sfml-graphics-s.lib(RenderStates.cpp.obj) : error LNK2038: обнаружено несоответствие для "RuntimeLibrary": значение "MD_DynamicRelease" не соответствует значению "MT_StaticRelease" в caleid.obj
1>sfml-graphics-s.lib(Color.cpp.obj) : error LNK2038: обнаружено несоответствие для "RuntimeLibrary": значение "MD_DynamicRelease" не соответствует значению "MT_StaticRelease" в caleid.obj
1>sfml-graphics-s.lib(CircleShape.cpp.obj) : error LNK2038: обнаружено несоответствие для "RuntimeLibrary": значение "MD_DynamicRelease" не соответствует значению "MT_StaticRelease" в caleid.obj
1>sfml-graphics-s.lib(Transformable.cpp.obj) : error LNK2038: обнаружено несоответствие для "RuntimeLibrary": значение "MD_DynamicRelease" не соответствует значению "MT_StaticRelease" в caleid.obj
1>sfml-graphics-s.lib(RenderWindow.cpp.obj) : error LNK2038: обнаружено несоответствие для "RuntimeLibrary": значение "MD_DynamicRelease" не соответствует значению "MT_StaticRelease" в caleid.obj
1>sfml-graphics-s.lib(RenderTarget.cpp.obj) : error LNK2038: обнаружено несоответствие для "RuntimeLibrary": значение "MD_DynamicRelease" не соответствует значению "MT_StaticRelease" в caleid.obj
1>sfml-graphics-s.lib(Shape.cpp.obj) : error LNK2038: обнаружено несоответствие для "RuntimeLibrary": значение "MD_DynamicRelease" не соответствует значению "MT_StaticRelease" в caleid.obj
1>sfml-graphics-s.lib(Transform.cpp.obj) : error LNK2038: обнаружено несоответствие для "RuntimeLibrary": значение "MD_DynamicRelease" не соответствует значению "MT_StaticRelease" в caleid.obj
1>sfml-graphics-s.lib(Texture.cpp.obj) : error LNK2038: обнаружено несоответствие для "RuntimeLibrary": значение "MD_DynamicRelease" не соответствует значению "MT_StaticRelease" в caleid.obj
1>sfml-graphics-s.lib(View.cpp.obj) : error LNK2038: обнаружено несоответствие для "RuntimeLibrary": значение "MD_DynamicRelease" не соответствует значению "MT_StaticRelease" в caleid.obj
1>sfml-graphics-s.lib(Shader.cpp.obj) : error LNK2038: обнаружено несоответствие для "RuntimeLibrary": значение "MD_DynamicRelease" не соответствует значению "MT_StaticRelease" в caleid.obj
1>sfml-graphics-s.lib(GLExtensions.cpp.obj) : error LNK2038: обнаружено несоответствие для "RuntimeLibrary": значение "MD_DynamicRelease" не соответствует значению "MT_StaticRelease" в caleid.obj
1>sfml-graphics-s.lib(VertexArray.cpp.obj) : error LNK2038: обнаружено несоответствие для "RuntimeLibrary": значение "MD_DynamicRelease" не соответствует значению "MT_StaticRelease" в caleid.obj
1>sfml-graphics-s.lib(Image.cpp.obj) : error LNK2038: обнаружено несоответствие для "RuntimeLibrary": значение "MD_DynamicRelease" не соответствует значению "MT_StaticRelease" в caleid.obj
1>sfml-graphics-s.lib(Glsl.cpp.obj) : error LNK2038: обнаружено несоответствие для "RuntimeLibrary": значение "MD_DynamicRelease" не соответствует значению "MT_StaticRelease" в caleid.obj
1>sfml-graphics-s.lib(ImageLoader.cpp.obj) : error LNK2038: обнаружено несоответствие для "RuntimeLibrary": значение "MD_DynamicRelease" не соответствует значению "MT_StaticRelease" в caleid.obj
1>sfml-system-s.lib(String.cpp.obj) : error LNK2038: обнаружено несоответствие для "RuntimeLibrary": значение "MD_DynamicRelease" не соответствует значению "MT_StaticRelease" в caleid.obj
1>sfml-system-s.lib(Err.cpp.obj) : error LNK2038: обнаружено несоответствие для "RuntimeLibrary": значение "MD_DynamicRelease" не соответствует значению "MT_StaticRelease" в caleid.obj
1>sfml-system-s.lib(ThreadLocal.cpp.obj) : error LNK2038: обнаружено несоответствие для "RuntimeLibrary": значение "MD_DynamicRelease" не соответствует значению "MT_StaticRelease" в caleid.obj
1>LINK : warning LNK4098: библиотека по умолчанию "MSVCRT" противоречит использованию других библиотек; используйте параметр /NODEFAULTLIB:library
1>sfml-window-s.lib(GlContext.cpp.obj) : error LNK2001: неразрешенный внешний символ "__imp__strstr"
1>sfml-graphics-s.lib(ImageLoader.cpp.obj) : error LNK2001: неразрешенный внешний символ "__imp__realloc"
1>sfml-graphics-s.lib(ImageLoader.cpp.obj) : error LNK2001: неразрешенный внешний символ "__imp__fopen_s"
1>sfml-graphics-s.lib(ImageLoader.cpp.obj) : error LNK2001: неразрешенный внешний символ "__imp__fopen"
1>sfml-graphics-s.lib(ImageLoader.cpp.obj) : error LNK2001: неразрешенный внешний символ "__imp__fread"
1>sfml-graphics-s.lib(ImageLoader.cpp.obj) : error LNK2001: неразрешенный внешний символ "__imp__strncmp"
1>MSVCRT.lib(_chandler4gs_.obj) : error LNK2001: неразрешенный внешний символ "__except_handler4_common"
1>D:\робоча\АП\2 семестр\ргр\Калейдоскоп РГР\Release\Калейдоскоп РГР.exe : fatal error LNK1120: неразрешенных внешних элементов: 7
========== Сборка: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Dormin вне форума Ответить с цитированием
Старый 01.05.2018, 15:45   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Ну если не хотите разбираться в компиляторных вещах, то хоть офф доку вы должны были осилить https://www.sfml-dev.org/tutorials/2.4/start-vc.php ?..

И опять повторюсь: прочитайте, что вам на родном написал компилятор. Потом решите как высобрались линковать либу и выберите подходящую.
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
у кого есть примеры Anton PHP 2 01.11.2012 00:23
ЛЮДИ!!!!!есть добрые люди??ОЧЕНь МАЛО ВРЕМЕНИ ДО СДАЧИ ОСТАЛОСЬ.. У КОГО ЕСТЬ ВОЗМОЖНОСТЬ отпишитессь!!!БУДУ ОЧЕНЬ ПРИЗНАТЕЛЕН... SwAAAte83 Паскаль, Turbo Pascal, PascalABC.NET 3 20.01.2012 06:09
есть ошибки? (протестите у кого С++ есть) Юлия_Ф Помощь студентам 11 07.10.2011 10:42
FRAPS - У кого есть??? PAVEL315 Софт 1 28.11.2007 05:32