ソース補充 | spin on the RITZ

ソース補充

貴様は今までに書いたソースコードの数を覚えているのか!?



テストで連成振動の式が書けなかったので、腹いせ(?)にソース書いたよ!

#include "DxLib.h"
#include <math.h>

void wait()
{
    static int before;

    while (GetNowCount()-before < 17)
        ;
    before = GetNowCount();
}

int init_window()
{
    ChangeWindowMode(TRUE);
    SetGraphMode(400, 180, 32);
    if (DxLib_Init() == -1)
        return -1;
    SetDrawScreen(DX_SCREEN_BACK);
    return 0;
}

void draw_circle(double x)
{
    DrawCircle(x, 100, 25, GetColor(0, 0, 0), FALSE);
    DrawCircle(x, 100, 24, GetColor(255, 255, 255), TRUE);
}

void draw_back(double x2)
{
    DrawBox(0, 0, 400, 200, GetColor(255, 255, 255), TRUE);
    DrawLine(30, 100, x2, 100, GetColor(0, 0, 0));
    DrawLine(30, 50, 30, 126, GetColor(0, 0, 0));
    DrawLine(30, 126, 380, 126, GetColor(0, 0, 0));
}

int WINAPI WinMain(
    HINSTANCE hIns, HINSTANCE hPIns, LPSTR cl, int ncs
) {
    if (init_window()==-1)
        return 0;

    double x1, x2;
    double q10, q20;
    double kappa, omg1, omg2;
    double v, t;
    double sqrt5 = sqrt(5.0);

    kappa = 1.0;
    v = 100.0;
    omg1 = (sqrt5+1)/2*sqrt(kappa);
    omg2 = (sqrt5-1)/2*sqrt(kappa);
    q10 = (3*sqrt5-5)/20*v/sqrt(kappa);
    q20 = (3*sqrt5-5)/20*v/sqrt(kappa);
    t = 0;

    while (ProcessMessage()!=-1) {
        ClsDrawScreen();
        x1 = 150 + 2*q10*sin(omg1*t) + 2*q20*sin(omg2*t);
        x2 = 300 - (sqrt5+1)*q10*sin(omg1*t) + (sqrt5-1)*q20*sin(omg2*t);
        draw_back(x2);
        draw_circle(x1);
        draw_circle(x2);
        t+=0.1;
        wait();
        ScreenFlip();
    }

    DxLib_End();
    return 0;
}




はじめつりあいの位置にあって、右側の粒子に初速度vを与えた時の動きをします。


ぼよんぼよ~んって動きます。

DXライブラリをしようしているので、適当にググれば使い方はわかるかと。