source: 2017/30/MikkoH/Sq/Sq/Sq/Sq.cs @ 9290

Revision 9290, 3.4 KB checked in by mianhayr, 21 months ago (diff)

hopelessly lost

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4
5public class Sq : PhysicsGame
6{
7    //List<Vector> ps, crc;
8    //int initsqmag = 50, initsqdist = 2; //killSwitch = 1;
9    //double rad = 50, radc = 0.01;
10
11    List<Square> sqs = new List<Square>();
12
13    public override void Begin()
14    {
15        Level.Width = Level.Height = Window.Width = Window.Height = 800;
16        Mouse.IsCursorVisible = true;
17        Level.Background.Color = Color.Black;
18
19        sqs.Add(new Square(100, 5));
20        //crc = CreateCircle(rad, pts);
21    }   
22
23    // r = radius, n = number of pts
24    List<Vector> CreateCircle(double r, double n)
25    {
26        List<Vector> crc = new List<Vector>();
27        for (int i = 0; i <= n; i++)
28            crc.Add(new Vector(Math.Sin(i) * r, Math.Cos(i) * r));
29        return crc;
30    }
31
32    void Rotate(List<Vector> vs, bool reverse = false)
33    {
34        double d = Time.SinceLastUpdate.TotalSeconds;
35        if (reverse) d = -d;
36        for (int i = 0; i < vs.Count; i++)
37            vs[i] = new Vector(vs[i].X * Math.Cos(-d) - vs[i].Y * Math.Sin(-d),
38                               vs[i].X * Math.Sin(-d) + vs[i].Y * Math.Cos(-d));
39    }
40
41    protected override void Paint(Canvas c)
42    {
43        c.BrushColor = Color.Red;
44
45        // checks if squeeze direction should be reversed
46        // merging this into the above loop will fuck everything up
47        // also tries to create new squares
48        for (int i = 0; i < sqs.Count; i++)
49        {
50            for (int j = 0; j < sqs[i].Count; j++)
51                if (sqs[i][j].Magnitude < sqs[i].minmag)
52                {
53                    Square newsq = new Square(sqs[i].mag-1, sqs[i].dist+1);
54                    //newsq.mag = 10;
55                    sqs.Add(newsq);
56                    sqs.Remove(sqs[i]);
57                    //sqs[i].magc = -sqs[i].magc;
58                    break;
59                }
60                else if (sqs[i][j].Magnitude > sqs[i].maxmag)
61                {
62                    sqs[i].magc = -sqs[i].magc;
63                    break;
64                }
65        }
66
67        // draws and squeezes the square
68        foreach (Square sq in sqs)
69            for (int i = 0; i < sq.Count; i++)
70            {
71                c.DrawLine(sq[i % sq.Count], sq[(i + sq.Count / 4) % sq.Count]);
72                sq[i] = Vector.FromLengthAndAngle(sq[i].Magnitude + sq.magc, sq[i].Angle);                     
73            }     
74           
75        c.BrushColor = Color.Blue;
76
77        // draws and squeezes the circle
78        //for (int i = 0; i < crc.Count; i++)
79        //{
80        //    c.DrawLine(crc[i % crc.Count], crc[(i + 2) % crc.Count]);
81        //    crc[i] = new Vector(Math.Sin(i) * rad, Math.Cos(i) * rad);
82        //    if (rad < minrad || rad > maxrad) radc = -radc;
83        //    rad -= radc;
84        //}
85
86        //foreach (Square sq in sqs) Rotate(sq);/* Rotate(crc, true);*/
87
88        base.Paint(c);
89    }
90}
91
92class Square : List<Vector>
93{
94    public double dist = 5, mag = 100, minmag = 5, maxmag = 300, magc = 2;
95
96    public Square(double s, double d)
97    {
98        for (double i = -s; i <= s; i += d) Add(new Vector(-s, i));
99        for (double i = -s; i <= s; i += d) Add(new Vector(i, s));
100        for (double i = s; i >= -s; i -= d) Add(new Vector(s, i));
101        for (double i = s; i >= -s; i -= d) Add(new Vector(i, -s));
102        dist = d; maxmag = mag * 5;
103
104    }
105}
Note: See TracBrowser for help on using the repository browser.