Toon posts:

[Algoritme] Pendulumania

Pagina: 1
Acties:
  • 558 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hallo,

ik ben al tijden verslaafd aan het spelletje Penulumania:
Afbeeldingslocatie: http://www.gamezworld.de/screenshots/pendulumania.jpg
te downloaden op :http://www.gamezworld.de/showentry.php?ID=818

Nu wil ik dit graag op de PocketPc maken, maar wil eerst algoritme uit programmeren in DelphI(aangezien ik daar veel beter in ben)

Nu probeer ik het dus in delphi na te maken, maar ik krijg het vloeiende draaien van die
bal aan het elastiekje niet voor elkaar. Het moet dus lijken alsof de witte bal
aan de ring is verbonden met een elastiek.
Op deze wijze kun je de bal met het elastiek laten wiegen, rondjes laten draaien etc. Hoe verder de bal van de ring, des te strakker de elastiek en des te harder
de bal weer terug wel naar de ring.

Moeilijk om uit te leggen, je moet het echt spelen om het te begrijpen.

Mijn vraag: hoe zit dat algoritme in elkaar.
Hoe hangt de versnelling in in de x as samen met de afstand tussen bal en ring?
en kom er echt niet uit
nu heb ik dit:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
//curx = x-positie van ring
        //cury = y-positie van ring
        //balx = x-positie van bal
        //baly = y-positie van bal

        dx:=curx-balx;
        dy:=cury-baly;
        a:=afstand(dx,dy);
        if start=true then begin
                balx:=balx+round(dx/10);
                baly:=baly+round(dy/10);

        end;


maar dat doet niets anders dan de bal naar de ring te verplaatsen :(

alvast bedankt

[ Voor 29% gewijzigd door Verwijderd op 16-01-2004 22:43 ]


  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 07-04 13:41
Dat staat ergens in mijn natuurkunde boek, ik zal het eens opzoeken :)

  • Osiris
  • Registratie: Januari 2000
  • Niet online
PrisonerOfPain schreef op 24 december 2003 @ 20:00:
Dat staat ergens in mijn natuurkunde boek, ik zal het eens opzoeken :)
Met het hoofdstuk "Modelleren" kom je denk ik een hele boel...

Je zult "gewoon" meerdere formules samen moeten voegen voor een X- en Y-snelheid en ditto coördinaten. En dan formules zoals die van de zwaartekracht etc gebruiken en formules voor massa-veer-systemen (ofzo)

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 07-04 13:41
Mja, k dacht dat het hier om de slingertijd enzo ging, modeleren heb ik nog niet :Y)

  • Osiris
  • Registratie: Januari 2000
  • Niet online
PrisonerOfPain schreef op 24 december 2003 @ 20:05:
Mja, k dacht dat het hier om de slingertijd enzo ging, modeleren heb ik nog niet :Y)
Mjah, t is nog een elastiek ook, dus een slinger gaat hier niet op :)

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 07-04 13:41
Mooi, dat scheelt mij weer een trip naar boven :) :D

  • Viva Vince
  • Registratie: Oktober 2002
  • Laatst online: 07-11-2024
Euhm voor een veer geld dat de kracht (lineair bij benadering) afhangt van de uitrekking. dus F(r)=- k r en dus tegengestelt aan de richting r. Als r in de plus x richting staat is er dus een kracht in de min x-richting.

diff vergelijking F=m a= m d^2 r /dt^2
Je hebt je veer F(r)=k r
Je hebt vrijving F(v)=c v =c dx/dt
je hebt een externe kracht F
M is de massa van de bal(draadje heeft geen gewicht)

Let op F en r zijn vectoren. Die hebben in jou geval dus een x en een y component.
x-richting:
m x''=-k x +c v +F(x,t)

Let er ff op dat je de constanten k en c zinnig kiest

Numeriek wil je hier 2 eerste order vergelijkingen van maken.. die krijg je zo van me ;)

Verwijderd

Topicstarter
nou,
ik snap er niks meer van:(
Ga ff natuurkundeboek halen denk ik

edit

Oh, das wel interessant! kijken of ik het snap

[ Voor 30% gewijzigd door Verwijderd op 24-12-2003 20:13 ]


  • Viva Vince
  • Registratie: Oktober 2002
  • Laatst online: 07-11-2024
Euhm dit gaat redelijk bloederig worden. Ik heb iets dergelijk wel eens moeten moddeleren. Maar dit betekend niet dat het niet leuk is!!

voor een lineaire ODE die er als volgt uit
u''+pu'+qu=0 met u(t) dus bijvoorbeeld je positie

kan herschreven worden tot
u1'=u2 en u2'=-qu1-pu2 met u1=u en u2=u'

Als je deze formules nu toe past voor je ODE in de x-richting en in de y-richting zou je de natuurkunde 'goed' moeten hebben

Wat hebben we hier aan? Nou m x''=-k x +c v +F(x,t) maar dit gaat niet lekker want numeriek wil ik alleen maar eerste orde vergelijkingen oplossen. En ja hoor hier boven staat hoe ik m moet herschrijven ;)

maar daar kom je nog niet veel verder mee... want dan heb je weer twee vergelijkingen.. en die zal je dan weer moeten oplossen

[ Voor 71% gewijzigd door Viva Vince op 24-12-2003 22:39 ]


Verwijderd

Topicstarter
Pffff,

volgens mij weer tijd op mijn Binas en natuurkunde van HAVO 5
erbij te pakken.
Gelukkig is het vakantie en kan ik er de komende week rustig op studeren

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Viva Vince: Ik heb VWO met Natuur & Techniek (dus Natuurkunde 1,2) gedaan en ik moet zeggen dat als ik het vluchtig lees ik er geen moer van snap...

Dus ik denk, let wel, denk, dat kaiton hier nogal weinig mee kan :X

Om nog maar een simpele opmerking van mij te plaatsen: Ik denk dat je het beste een slinger met variabele lengte kunt maken, waarbij de lengte bepaald wordt door het massa-veer-systeem :)

Verwijderd

Topicstarter
inderdaad , dat eerste stuk kon ik nog wel volgen, maar dat tweede stuk
kan ik nu nog geen touw aan vast knopen

  • Viva Vince
  • Registratie: Oktober 2002
  • Laatst online: 07-11-2024
Osiris schreef op 24 december 2003 @ 20:22:
Viva Vince: Ik heb VWO met Natuur & Techniek (dus Natuurkunde 1,2) gedaan en ik moet zeggen dat als ik het vluchtig lees ik er geen moer van snap...

Dus ik denk, let wel, denk, dat kaiton hier nogal weinig mee kan :X

Om nog maar een simpele opmerking van mij te plaatsen: Ik denk dat je het beste een slinger met variabele lengte kunt maken, waarbij de lengte bepaald wordt door het massa-veer-systeem :)
Stiekum zat ik er zelfs aan te denken om die demping te vervangen door een demping die lijkt om exp(-t). Hmm je kan idd het als een slinger opvatten, en met een massa-veer-demping(!) de lengte bepalen. Zou je nog best eens redelijk ver mee kunnen komen.. k ik ga eens wat uitschrijven

Tweede stuk is ook nog redelijk brak, en dan komt er na nog iets minder leuks dus ik zou idd hier maar niet de oplossing in zoeken.

[ Voor 11% gewijzigd door Viva Vince op 24-12-2003 20:28 ]


Verwijderd

Topicstarter
He, balen

Ik heb alleen nog maar mijn Fysica deel 4 boek nog.
Weten jullie een internet pagina die uitlegt hoe dat ook alweer ging
met veren enzo?

Verwijderd

Topicstarter
als ik in de config files van pendulumania kijk zie ik de volgende constanten staan:
[ConstantSetting]
NaturalLength=1
BallMass=1
RubberConstant=1
Gravity=1
CollisionConstant=1

Kunnen jullie hier iets mee?

  • Viva Vince
  • Registratie: Oktober 2002
  • Laatst online: 07-11-2024
hmm ff vraagje over het spel, de ring zit dus aan je muis vast. Door de ring te verplaatsen komt de bal er achter aan, en kan je dingen raken. Klopt dit? Had je de source-code van het spel ook?

Your(=my) rank : E O-)

[ Voor 7% gewijzigd door Viva Vince op 24-12-2003 20:50 ]


Verwijderd

Topicstarter
Ja dat klopt. De bedoeling is om zoveel mogelijk ballen kapot te maken met
de witte bal.

als de lijn te lang wordt dan kan hij breken en ben je af.
Je kan combo's maken door steeds binnen 1,5 seconde de volgende bal te raken.

Ik heb de sourcecode helaas niet.

Verwijderd

Topicstarter
Mijn topscore is 3240000

  • Viva Vince
  • Registratie: Oktober 2002
  • Laatst online: 07-11-2024
Dat ga ik niet halen :)

Over dit modeleerprobleem ga ik nog eens nadenken. Op die vage manier kan het altijd(ff nog een relatief coordinatenstelser in voeren en klaar). Maar om het op een beetje eenvoudige manier op te lossen is "wat" moeilijker(beetje paradox).

Ik denk echter niet dat je niet onder differentiaalvergelijkingen uit komt. Het is dus misschien een idee om je daar een beejte in te verdiepen(zowel wat een diff vergelijking echt is, en hoe je hem numeriek oplost).

Voor numeriek oplossen van ODE's zoek eens op "Runge-Kutta ODE" ODE=OrdinaryDifferentialEquation.

[ Voor 3% gewijzigd door Viva Vince op 24-12-2003 20:59 ]


  • mr_obb
  • Registratie: Juni 2001
  • Laatst online: 20-01 17:28

mr_obb

Lakse Perfectionist

Op zich vallen de formules nog wel mee.

Je hebt een versnelling in de y-richting (verticaal) van k*v*sin(alpha)-m*g .
In de X-richting (horizontaal) is de versnelling nog makkelijker: k*v*cos(alpha)

Afbeeldingslocatie: http://2kvl01.mine.nu/plaatje.png

k= veerconstante. (RubberConstant)
v=uitrekking van de veer. ( "afstand tussen bal en ring" MIN NaturalLength)
alpha=hoek van touw ten opzichte van de horizontaal.
m=massa bal (BallMass)
g=zwaartekracht (Gravity)

Aandachtspunten:

- Veer wordt ingedrukt en uitgerekt
- De versnellingen kunnen positief en negatief zijn

Met bovenstaande gegevens moet je een eind komen.

Succes

[ Voor 5% gewijzigd door mr_obb op 24-12-2003 21:06 ]


  • mr_obb
  • Registratie: Juni 2001
  • Laatst online: 20-01 17:28

mr_obb

Lakse Perfectionist

Viva Vince schreef op 24 december 2003 @ 20:58:
[...]


Dat ga ik niet halen :) Over dit modeleerprobleem ga ik nog eens nadenken. Op die vage manier kan het altijd(ff nog een relatief coordinatenstelser in voeren en klaar). Maar om het op een beetje eenvoudige manier op te lossen is "wat" moeilijker(beetje paradox). Ik denk echter niet dat je niet onder differentiaalvergelijkingen uit komt. Het is dus misschien een idee om je daar een beejte in te verdiepen(zowel wat een diff vergelijking echt is, en hoe je hem numeriek oplost).

Voor numeriek oplossen van ODE's zoek eens op "Runge-Kutta ODE" ODE=OrdinaryDifferentialEquation.
Ik denk dat je het jezelf extreem moeilijk gaat maken met ODE's... Runga-Kutta is leuk natuurlijk, maar voor dit probleem iets te hoog gegrepen. Met een beetje eerstejaars dynamica kom je er ook wel uit.

  • Viva Vince
  • Registratie: Oktober 2002
  • Laatst online: 07-11-2024
mr_obb schreef op 24 december 2003 @ 20:59:
Op zich vallen de formules nog wel mee.

Je hebt een versnelling in de y-richting (verticaal) van k*v*sin(alpha)-m*g .
In de X-richting (horizontaal) is de versnelling nog makkelijker: k*v*cos(alpha)
En hoe wil je dat terugvoeren op een x en y coord? Twee keer integreren, maar dan nekt je die cos/sin(je mag cos(a)=a niet stellen omdat a groot kan worden. Numeriek.... tja zit je toch weer met een ODE

[ Voor 6% gewijzigd door Viva Vince op 24-12-2003 21:09 ]


  • mr_obb
  • Registratie: Juni 2001
  • Laatst online: 20-01 17:28

mr_obb

Lakse Perfectionist

Viva Vince schreef op 24 december 2003 @ 21:08:
[...]


En hoe wil je dat terugvoeren op een x en y coord? Twee keer integreren, maar dan nekt je die cos/sin(je mag cos(a)=a niet stellen omdat a groot kan worden. Numeriek.... tja zit je toch weer met een ODE
Ik denk dat je niet moet gaan integreren. Je moet het inderdaad numeriek gaan benaderen, maar een R-K is te zwaar hiervoor. Ik ben van mening dat je de snelheid met Euler goed genoeg kan benaderen. Voor de positie van de bal gebruik je dan de positie die de bal op je scherm heeft.

Wat ik dus denk:

In het begin zijn de ring en de bal in evenwicht. Op het moment dat je de ring gaat bewegen krijgt de bal een versnelling (door de uitrekking van de veer). De snelheid reken je uit met een eenvoudige Euler. Je programmeert het zo dat je bal met de berekende snelheid over het scherm beweegt. Vervolgens gebruik je de positie van de ring en de bal op het scherm om de nieuwe versnelling te berekenen. Je komt dan dus in een loop terecht.

Verwijderd

Topicstarter
Na,

ik houd het ff voor gezien. Het gaat me nogal duizelen
.
Bedankt ik ga er morgen weer ,ee verder

  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

Volgens mij kan je dit met 'gewone' mechanica niet oplossen en moet je het in termen van de Hamiltoniaan van het systeem formuleren. Hier kan je een inleidend verhaal erover vinden, waarmee je in principe het probleem aan moet kunnen pakken.

Wie trösten wir uns, die Mörder aller Mörder?


Verwijderd

Misschien even offtopic, maar bestaat er geen 'normale, simpele' versie van dit geweldige spelletje? Ik bedoel dan een versie die je snel op kunt starten en die -nog het belangrijkste- draait in een windows-venster op de desktop en niet fullsceen.

Geweldig dit!

  • Kapoen
  • Registratie: Mei 2002
  • Laatst online: 09:28
Bij de Knoppix live-linux cd versie 3.3 zit een spelletje dat Enigma heet.
In dit spel speel je ook met een bal aan een elastiek, en dat is goed gedaan
moet ik zeggen. Hoe verder je de elastiek uitrekt hoe meer je gaat moeten
'trekken' :).

Misschien is de source van dit spel ook beschikbaar?

*edit*: ik heb even de url opgezocht voor je van dit spel:
http://www.nongnu.org/enigma/
Ik denk dat je moet kijken naar het 'Oxyd' deel, dat is het
deel met de elastiek-bal combo.

[ Voor 29% gewijzigd door Kapoen op 25-12-2003 12:24 ]

Clowns to the left of me, Jokers to the right


Verwijderd

Hier te downloaden. De link van de hierboven opgegeven downloadpagina werkt niet namelijk.

Verwijderd

Topicstarter
Verwijderd schreef op 25 december 2003 @ 00:50:
Misschien even offtopic, maar bestaat er geen 'normale, simpele' versie van dit geweldige spelletje? Ik bedoel dan een versie die je snel op kunt starten en die -nog het belangrijkste- draait in een windows-venster op de desktop en niet fullsceen.
Helemaal niet offtopic. Ik probeer namelijk dit spel na te maken voor
Windows/Pocketpc.
Daarom heb ik het ook in "programming/webscripting" geplaatst.

Ik hoop dus over een week of 2 een zelfde programma te kunnen aanbieden

Verwijderd

Topicstarter
MR_Obb?

Ik heb jouw algoritme geimplementeerd, maar hij doet het niet helemaal.
Ik kan nu de ring verplaatsen en het elastiek rekt uit. De bal beweegt weer naar de ring toe en blijft onder dering hangen op een afstand afhankelijk van de massa van de bal. Alleen, hij slingert niet :(. De witte bal stopt altijd loodrecht onder de ring (en zwaait dus niet door).

Misschien kun je me even helpen?

Als iemand wil helpen dan kan ik de source van wat ik heb we even posten

[ Voor 10% gewijzigd door Verwijderd op 25-12-2003 15:33 ]


  • mr_obb
  • Registratie: Juni 2001
  • Laatst online: 20-01 17:28

mr_obb

Lakse Perfectionist

Kan je inderdaad de source even posten? Dan kan ik misschien zien waar het fout gaat.

Verwijderd

Topicstarter
Hier de url waar je de source kan downloaden.
Het is geschreven in Delphi.
http://www.kaiton.nl/bal/Bal.zip

Let aub niet op de manier van schrijven, het is erg slordig opgezet(ik wilde alleen algorithme testen).

Hoe werkt het? Ik had geen zin om een gameloop te schrijven. Daarom maak ik gebruik van 2 timers.
Timer1 wordt elke 20 ms aangeroepen en verplaats de ring en de bal aan de hond van Mr_obb's algortihm.
Timer2 word elke 1ms aangeroepen en ververst alleen het scherm.

Voor als je geen Delphi hebt:
Project1.exe is een gecompileerde versie (voor als je geen delphi hebt).
Hieronder de source van de timer1 procedure:

Let op:
ballx, bally zijn globale variablen en geven de positie in pixels op het scherm.
curx,cury zijn globale variablen en geven de positie van de ring weer
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
procedure TForm1.Manier1(Sender: TObject);
var
        dx:integer;
        dy:integer;
        a:integer;
        s:integer;
        z:double;

        k:double;//rubber constant
        v:double; //uitrekking-natural length
        n:integer; //natural length
        hoek:double;
        mass:double;
        g:double;//gravity


begin
        if start=true then begin
        n:=100;
        k:=tbRC.Position/10;
        mass:=tbMass.position;
        g:=tbGravity.Position;

        dx:=(curx-balx);
        dy:=(cury-baly);
        v:=round(afstand(dx,dy))-n;

        if dx<>0 then
                hoek:=(arctan(dy/dx))
        else hoek:=0;            
        z:=(radtodeg(cos(hoek)));
        if (curx>balx) and (cury<baly) then hoek:=-hoek;
        if (curx<balx) and (cury<baly) then hoek:=degtorad(180)-hoek;
        if (curx<balx) and (cury>baly) then hoek:=degtorad(180)-hoek;
        if (curx>balx) and (cury>baly) then hoek:=degtorad(360)-hoek;
        if hoek=0 then exit;

        dx:=round(k*v*z);
        baldx:=(round(dx/30));


      
        if radtodeg(hoek)=0 then exit;

        z:=(radtodeg(sin(hoek)));


        dy:=round(k*v*z-mass*g );
        baldy:=round(dy/100);


                if balx<curx then
                        balx:=balx+round(baldx)
                else
                       balx:=balx-round(baldx);

                if baly<cury then
                        baly:=baly-round(baldy)
                else
                       baly:=baly-round(baldy) ;




        if balx<0 then baldx:=-baldx;
        if balx>image1.Width then baldx:=-baldx;
        if baly<0 then baldy:=-baldy;
        if baly>image1.height then baldy:=-baldy;

         end;
     

end;

[ Voor 5% gewijzigd door Verwijderd op 27-12-2003 10:41 ]


  • AlvaK
  • Registratie: November 2000
  • Niet online
Ik heb even geen zin om Delphi te installen, dus ik hem maar even de .exe gestart.

Wat me opvalt:
Wanneer je het aanknooppunt horizontaal beweegt, zal de bal nooit het aanknooppunt inhalen wanneer je stopt met bewegen. Ik denk dat je daar ens een oplossing voor moet zoeken, zodat het veel natuurlijker aan zal voelen...

Dat je meer het "Massa is traag"-gevoel krijgt. ;)

  • Zpottr
  • Registratie: Mei 2000
  • Niet online

Zpottr

Henk

Je mist volgens mij inderdaad een opslagterm: de snelheid van de bal. Nu krijg je altijd een nette "kritisch gedempte" [/korrel zout] beweging naar het evenwichtpunt, en geen overshoot.

Nu ben ik geen programmeerheld (maar wel natuurkundige die al jaren zijn mechanica heeft laten verstoffen), maar in je programma zie ik een dx en een dy staan. Die gebruik je volgens mij (?) om een soort statische verplaatsing aan te duiden tussen twee reken- of tekenmomenten (toch?). Daardoor komt het dus, dat op het moment dat de veer uitgewerkt is en alle krachten weer in evenwicht zijn, de bal meteen stil hangt. Wat je dus nodig hebt, is een massa die bij krachtenevenwicht eenparig door blijft bewegen (heel even, zogauw dit het krachtenevenwicht weer verstoort is de eenparigheid weg en treedt er weer een (waarschijnlijk negatieve) versnelling op).

Als ik dit zou moeten modelleren zonder al te diep in de theorie te duiken, zou ik het op het eerste gezicht helemaal in poolcoordinaten doen, waarbij de afstand r tussen cursor en bal en de hoek die de elastiek maakt met de vertikaal de belangrijkste variabelen zijn. De meest interessante kracht (spankracht van elastiek) is dan namelijk altijd radiaal gericht in dit stelsel. Dit stelsel zou je vervolgens kunnen laten bewegen in een rechthoekig stelsel voor de interactie met de gebruiker en het spel.

Zoals al opgemerkt in de vorige post: je hebt echt een kinetische energieterm of een echte snelheidsterm nodig.

[ Voor 12% gewijzigd door Zpottr op 27-12-2003 12:30 ]

Zoef


  • mr_obb
  • Registratie: Juni 2001
  • Laatst online: 20-01 17:28

mr_obb

Lakse Perfectionist

Zpottr schreef op 27 december 2003 @ 12:25:

Als ik dit zou moeten modelleren zonder al te diep in de theorie te duiken, zou ik het op het eerste gezicht helemaal in poolcoordinaten doen, waarbij de afstand r tussen cursor en bal en de hoek die de elastiek maakt met de vertikaal de belangrijkste variabelen zijn. De meest interessante kracht (spankracht van elastiek) is dan namelijk altijd radiaal gericht in dit stelsel. Dit stelsel zou je vervolgens kunnen laten bewegen in een rechthoekig stelsel voor de interactie met de gebruiker en het spel.
Het nadeel van poolcoordinaten is dat er ook nog een zwaartekracht is.
Zoals al opgemerkt in de vorige post: je hebt echt een kinetische energieterm of een echte snelheidsterm nodig.
Dat is inderdaad het probleem. Ik heb nu geen tijd om de code goed door te kijken, maar er moet een snelheidsterm komen.

EDIT:

Ik zie wat er fout gegaan is. Je hebt de termen als dy gebruikt. De bedoeling is dat je de termen gebruikt als dv(y)/dt, waadbij v(y) dy/dt is.

Je berekent dus elke 20 ms de term en telt die op bij dy. dy begint met nul en als er een verplaatsing van de ring is, dan is er ook een dv(y)/dt en daarmee na 20 ms dus ook een dy/dt. Succes.

[ Voor 16% gewijzigd door mr_obb op 27-12-2003 15:45 ]


Verwijderd

Dit is gewoon een simpel massa-veer systeem. Kijk eens op http://www-2.cs.cmu.edu/~baraff/sigcourse/index.html (en dan vooral het stuk 'particle dynamics') voor de theorie en wat sample code.

Verwijderd

Het kan natuurlijk netter, maar hieronder wordt met euler in een cartesisch coordinaten stelsel de baan van de bal uitgerekend als de muis bewogen wordt.
UpdatePos moet vaak aangeroepen worden, maar doordat deze procedure de tijd zelf meet maakt het (bijna) niet uit of er een korte of lange tijd tussen zit.

Er wordt gebruik gemaakt van globale (form-)variabelen om de positie en snelheid op te slaan.

Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Const 
// deze waarden geven een redelijk bewegende bal
      MBal  = 2 ;   // massa van de bal
      CVeer = 1 ;   // veerconstante
      g     = -50 ;   // zwaartekrachtscontstante;
      fv    = 0.2 ;   // 'luchtwrijving'
procedure TForm1.UpdatePos;
Var T: int64;
    dt: real;
    ax,ay: real;
begin
// verwijder vorige bal ...
// hoeveel tijd is er verstreken sinds de vorige keer tekenen?
  QueryPerformanceCounter(T);
  dt:=min((t-OldT)*1e-6,0.2);
  OldT:=T;

// update positie
  MouseCoord:=ScreenToClient(Mouse.CursorPos);
  ax:=-(pxBal-MouseCoord.x)*CVeer/MBal-fv*vxBal;
  ay:=-(pyBal-MouseCoord.y)*CVeer/MBal-g-fv*vyBal;
  vxBal:=vxBal+ax*dt;
  vyBal:=vyBal+ay*dt;

  pxBal:=pxBal+vxBal*dt;
  pyBal:=pyBal+vyBal*dt;

// teken opnieuw....
{   canvas.MoveTo(MouseCoord.x,MouseCoord.y);
  canvas.LineTo(round(pxBal),round(pYBal));
  Canvas.Ellipse(round(pxBal-10),round(pyBal-10),round(pxBal+10),round(pyBal+10));}
end;

[ Voor 18% gewijzigd door Verwijderd op 27-12-2003 19:37 ]


Verwijderd

Topicstarter
_/-\o_ _/-\o_ hoi PtDw


WAAAW!!
Het werk!!!!!!!!

BEDANKT voor de source!!!!!!

_/-\o_ PtDw

[ Voor 113% gewijzigd door Verwijderd op 27-12-2003 20:25 ]


Verwijderd

/offtopic

Je hebt vakantie kaiton, dus over twee weken de eerste beat release van "kaiton-ball"? ;)

Spreek je laters

Verwijderd

Topicstarter
Jaja, het werkt als een trein.
Ik heb PtDw's code gebruikt. Volgens mij is dat dezelfde formule als Penulumania gebruikt(de bal doet precies hetzelfde).

Ik heb het omgezet naar C++/DirectX.
Ook werkt het op mijn PocketPC (ipaq 3160) met 30 frames/sec.

Afbeeldingslocatie: http://www.kaiton.nl/bal/screen.jpg


Je kan het even zelf uitproberen:
http://www.kaiton.nl/bal/Release.zip

[ Voor 15% gewijzigd door Verwijderd op 28-12-2003 11:09 ]


  • Macros
  • Registratie: Februari 2000
  • Laatst online: 30-04 09:28

Macros

I'm watching...

Mooi gedaan. Enige foutje is het kaatsen van de muren. De kaats is dezelfde hoek als dat de bal aankwam en niet geinvert.

"Beauty is the ultimate defence against complexity." David Gelernter


  • mr_obb
  • Registratie: Juni 2001
  • Laatst online: 20-01 17:28

mr_obb

Lakse Perfectionist

Verwijderd schreef op 27 december 2003 @ 19:25:
Het kan natuurlijk netter, maar hieronder wordt met euler in een cartesisch coordinaten stelsel de baan van de bal uitgerekend als de muis bewogen wordt...
Inderdaad. Zo bedoelde ik het ook.

Succes met de rest van je werk Kaiton!

Verwijderd

Ik heb een tijdje terug met een maat van me hetvolgende flashding gemaakt met hetzelfde principe:

http://www3.8200rpm.com/buts/

Elastiek is met standaard natuurkunde versnellingsformules opgebouwd.
Lengte tussen hand en bal * contstante is tegenkracht, en zwaartekracht naar beneden.

vx+=ax; x+=vx;
vy+=ay; y+=vy;

meer is het niet..

Voor echt realisme is dit wat te beperkt.. maar het werkt lekker.


stroop
http://www.dailyplay.net/

Verwijderd

Topicstarter
Jongens!

Het werkt allemaal als een trein.
Ik heb er nu geluid in en je kan al balletjes kapot maken
Alsje geinteresseerd bent download dan hier de laatste versie:

http://www.kaiton.nl/bal/Release.zip

[ Voor 18% gewijzigd door Verwijderd op 29-12-2003 16:09 ]


  • Paitor
  • Registratie: Maart 2001
  • Laatst online: 08-05 23:14

Paitor

rages doen :P

Kaiton, het werkt goed op mijn PC, maar zou je ook de ppc release kunnen maken?
Op mijn HP 1915 wil deze versie namelijk niet werken, dus neem aan dat er daarvoor een andere moet zijn. Wil nl wel even kijken hoeveel frames ik dan haal enzo :)

Live Life to the Max | Kom op konijntje doe maar huppele wiebele


Verwijderd

Topicstarter
hier de ARM PocketPC versie

Je kan het afsluiten door op de record knop te drukken

Url: http://www.kaiton.nl/bal/PocketPCRelease.zip

Dus , uitpakken op PC. Alle bestanden naar een map verplaatsen op Pocketpc
en simpel.exe starten(op de Pocketpc).

Ohja, je kan het scherm ook roteren. Ik weet niet welke knop het is
op een 1915 maar bij mij is het de meest rechtse
Let op! ik heb het alleen getest op mijn Pocketpc 2000.

Kan je me ook laten weten of het werkt?

[ Voor 128% gewijzigd door Verwijderd op 29-12-2003 17:49 ]


  • riezebosch
  • Registratie: Oktober 2001
  • Laatst online: 21-05 20:13
ehm... alleen breekt bij mij op de PC versie het stiek nooit. Zo is er natuurlijk geen kunst aan :P

Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack


Verwijderd

Topicstarter
Zo!

Ik heb de pocketpc versie en de PC versie hierneer gezet:
http://www.kaiton.nl/bal

Veel plezier ermee

  • JeRa
  • Registratie: Juni 2003
  • Laatst online: 07-05 12:51
Erg leuk, snel en mooi gemaakt! :D

Twee foutjes die me opvielen:

1) Als je begint met spelen zonder de muis te hebben bewogen, dan is de 'cursor' nog ergens anders. Zodra je je muis beweegt breekt, afhankelijk van de afstand tussen de muis en de cursor, het elastiek onmiddelijk.

2) Het is "then it's all over" ;)

[ Voor 6% gewijzigd door JeRa op 30-12-2003 20:40 ]


Verwijderd

Topicstarter
ik zie dat er wel meer fouten in de text zitten, maar ja
mijn engels is niet al te best.

Zal er later eens naar kijken.

[ Voor 18% gewijzigd door Verwijderd op 30-12-2003 20:50 ]


  • DaCoTa
  • Registratie: April 2002
  • Laatst online: 01:17
Erg goed gedaan, mooie remake van een onleesbaar japans spel :) Ga je er ook extra's inbouwen?

Nog een kleine bug, als je herstart, zie je de puntenbonus van het potje daarvoor nog (de vier scoredisplays die uit elkaar spatten).

Verwijderd

Topicstarter
Ja, ik ga nog extra's inbouwen:

Ik ben van plan om bonussen in te bouwen, zoals:
* Extra tijd
* Extra sterkte van elastiek
* Extra snelheid

Deze bonussen moet je verdienen door "tests" te halen.
Deze opdrachten zijn in de vorm kleine balletjes (een stuk of 10) die je
allemaal op volgorde binnen 1 seconde moet vernietigen.
Belangrijk is dat ze ook op volgorde moeten vernietigd. Deze testen komen 1 x per minuut langs.

Een voorbeeld:

15 balletjes verschijnen in beeld. Bijvoorbeeld zo:


***********************


Met 1 vloeiende rechte beweging kan je deze reeks (=test) dus halen.

Moeilijker word deze

*******************X

Deze is zelfde als boven , alleen mag de X niet geraakt worden

Of deze(Snel heen en weer schieten)
:

1*
2*
3*
4*
5*


Of natuurlijk bewegende ballen.

Kortom, ik zit nog vol met ideeen

Verwijderd

Verwijderd schreef op 31 december 2003 @ 12:17:
Kortom, ik zit nog vol met ideeen
En dát is een goeie zaak.... ik houd het in de gaten.

  • DaCoTa
  • Registratie: April 2002
  • Laatst online: 01:17
Zijn er plannen voor een gecentraliseerde high-score lijst?
En nog een bugje: de tijdlimiet loopt gewoon door met negatieve getallen...
offtopic:
Highscore van 240232

[ Voor 49% gewijzigd door DaCoTa op 01-01-2004 17:01 ]


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 15-05 14:44

_Thanatos_

Ja, en kaal

Op een gegeven moment is het echt niet meer speelbaar :)

Klik maar es:
Bijna over
En toen knapte ie

Ohja, het elastiekje zit ook niet netjes in het midden van dat grote ding. En soms knippert het elastiekje ff tussen oranje en zwart... zeker foutje in het berekenen van het kleurtje.

Hoe wordt eigenlijk mijn score zo hoog? Weet je zeker dat daar niet een foutje in zit? Volgens mij is dit wel erg hoog ;)

[ Voor 50% gewijzigd door _Thanatos_ op 01-01-2004 16:10 ]

日本!🎌


Verwijderd

Topicstarter
Wahahaha,

jullie halen scores die ikzelf nog nooit gehaald heb!!!

Ik ben idd van plan om een website met highscores te maken(die automatisch
gepost worden vanuit het spel).

Dat het niet speelbaar is na heel veel ballen kan kloppen.
Op dit moment wordt de mace alleen maar groter. In de toekomst(deze week)
wordt de bal ook weer kleiner, het elastiek sterker/zwakker etc(net als in Pendulumania).

Houd deze thread in de gaten. Het spel zal de komende weken/dagen nog
grote veranderingen ondergaan!

Erg bedankt voor de positieve replies!

Verwijderd

Topicstarter
_Thanatos_ schreef op 01 januari 2004 @ 16:04:
Hoe wordt eigenlijk mijn score zo hoog? Weet je zeker dat daar niet een foutje in zit? Volgens mij is dit wel erg hoog ;)
Uhm, de score wordt als volgt berekend:
Per vernietigde bal wordt er bij de score opgeteld:
de lengte van elastiek(in pixels) * combocount.

Jouw score is dus gewoon goed(en niet al te hoog ;))
Mijn record is 156432

  • DaCoTa
  • Registratie: April 2002
  • Laatst online: 01:17
Als de mace erg groot wordt, dan worden de bewegingen erg korrelig. Ik heb een keer ongeveer 140 ballen destroyed, dan is vooral de draaiing van de mace erg springerig. Kan het zijn dat de rotatie berekend wordt met een integer value ipv een floating point?

Ben benieuwd naar wat er komen gaat. Wat me leuk lijkt is een soort record en replay mogelijheid. En wat interessant is, is wat meer cijfertjes op de game-over pagina (aantal ballen, langste combo, hoogste enkelvoudige score, whatever)

Erg vervelend en verslavend spel... Bah...

[ Voor 37% gewijzigd door DaCoTa op 05-01-2004 00:08 ]


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 15-05 14:44

_Thanatos_

Ja, en kaal

Het lijkt ook alsof werkelijk alle graphics in het spel ge-interpoleerd worden... ze zijn niet scherp dus. net alsof het windowtje in werkelijkheid 2x zo klein zou moeten zijn... Het lijkt alsof die bal uit vector-graphics bestaat, omdat ie oneindig groter kan worden, dus niet interpoleren zou wel fijn zijn ;)

Nog een klein dingetje: "elastic" betekent "elastisch" terwijl ik denk dat je "elastiek" bedoelt. Volgens dictionary.com moet het "rubber" of "rubber band" zijn.. evt "elastic band" of "elastic rubber" kan misschien ook wel.

[ Voor 27% gewijzigd door _Thanatos_ op 02-01-2004 16:49 ]

日本!🎌


Verwijderd

Topicstarter
_Thanatos_ schreef op 02 januari 2004 @ 16:41:
Het lijkt ook alsof werkelijk alle graphics in het spel ge-interpoleerd worden... ze zijn niet scherp dus. net alsof het windowtje in werkelijkheid 2x zo klein zou moeten zijn...
Klopt precies. Het spel is eigelijk gemaakt voor de PocketPC.
Omdat 320x240 zo klein is laat ik het scherm op de PC 640x480 groot zijn.
Misschien zal ik later een 640x480 versie maken.

Bedankt voor de taal-tips! Ik zal ze asap er in verwerken

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 15-05 14:44

_Thanatos_

Ja, en kaal

PocketPC impliceert misschien 240x320, maar als je het ook gaat porten naar Palms, zul je sowieso ook 480x640 moeten ondersteunen. De nieuwste Palms hebben dat nml ;)

Dus twee versies van de achtergrond misschien om te voorkomen dat je pocketPC niet gaat extrapoleren (==trager dus) en de andere dan voor hogere resolutie schermen en de PC. De ballen kun je volgens mij best vectoren geven (direct3D? :P)

日本!🎌


  • Paitor
  • Registratie: Maart 2001
  • Laatst online: 08-05 23:14

Paitor

rages doen :P

Verwijderd schreef op 29 december 2003 @ 16:56:
hier de ARM PocketPC versie

Je kan het afsluiten door op de record knop te drukken

Url: http://www.kaiton.nl/bal/PocketPCRelease.zip

Dus , uitpakken op PC. Alle bestanden naar een map verplaatsen op Pocketpc
en simpel.exe starten(op de Pocketpc).

Ohja, je kan het scherm ook roteren. Ik weet niet welke knop het is
op een 1915 maar bij mij is het de meest rechtse
Let op! ik heb het alleen getest op mijn Pocketpc 2000.

Kan je me ook laten weten of het werkt?
Ik heb heel ff snel het spelletje uitgeprobeerd, alle knoppen werken perfect.
Dus ook de meest rechtse knop voor het draaien en de record knop voor het afsluiten van het spel.
Enige 'bugje' wat ik heb bij het draaien:
Afbeeldingslocatie: http://www.tweakers.net/ext/f/20512/full.jpg
Zo zie ik het bij het starten als ik het beeld draai.
Speel ik het spel dan vervolgens, wil het nog wel eens dat de nieuwe ballen helemaal uit het beeld geplaatst worden, die functie werkt dus nog niet echt goed.
Maar zal dit topic goed blijven volgen, als er een improved versie is merk ik het vanzelf :)

Live Life to the Max | Kom op konijntje doe maar huppele wiebele


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 15-05 14:44

_Thanatos_

Ja, en kaal

Je moet het eigenlijk ook de andere kant op kunnen draaien. Ik kan me voorstellen dat je em aan de rechterkant (zoals op die foto bedoel ik) wil vasthouden, maar dan moet je met links je pen gebruiken. Maar ik ben bijvoorbeeld rechts ;)

btw Paitor, ik hoop dat het toeval is dat we dezelfde sig hebben :?

日本!🎌


  • DaCoTa
  • Registratie: April 2002
  • Laatst online: 01:17
Wat is de functie van het wel of niet draaien van de ballen eigenlijk?
offtopic:
642408

  • Paitor
  • Registratie: Maart 2001
  • Laatst online: 08-05 23:14

Paitor

rages doen :P

_Thanatos_ schreef op 04 januari 2004 @ 22:48:
Je moet het eigenlijk ook de andere kant op kunnen draaien. Ik kan me voorstellen dat je em aan de rechterkant (zoals op die foto bedoel ik) wil vasthouden, maar dan moet je met links je pen gebruiken. Maar ik ben bijvoorbeeld rechts ;)

btw Paitor, ik hoop dat het toeval is dat we dezelfde sig hebben :?
Hmmm voor zover ik weet heb ik hem niet gejat van jou, heb deze echt al wel weer een tijdje maar ja, dat heb je met GoT he.
Ik verwijder em wel ff, hij boeit me toch weinig meer :)

Live Life to the Max | Kom op konijntje doe maar huppele wiebele


Verwijderd

Topicstarter
Jongens!

Bedankt voor alle hulp!
Game is erg succesvol! Nu al 1200 downloads!!!
Het zit nu vol met extra's!!!

Online highscore server is online

http://www.kaiton.nl/bal

[ Voor 24% gewijzigd door Verwijderd op 16-01-2004 17:12 ]


  • Paitor
  • Registratie: Maart 2001
  • Laatst online: 08-05 23:14

Paitor

rages doen :P

Verwijderd schreef op 16 januari 2004 @ 17:03:
Jongens!

Bedankt voor alle hulp!
Game is erg succesvol! Nu al 1200 downloads!!!
Het zit nu vol met extra's!!!

Online highscore server is online

http://www.kaiton.nl/bal
Mooie update :)
Leuke functies iig, goed om de tijd te verdrijven op mijn ipaqje :)

Live Life to the Max | Kom op konijntje doe maar huppele wiebele


  • Hagar
  • Registratie: Februari 2001
  • Laatst online: 14-10-2025

Hagar

Diabootic

in combinatie met winex werkt het ook prima op linux :)
Aleen is dat schermpje zo verekte klein op een 1280x1024 resolutie :X
Maar dit is erg speelbaar en verslavend, zeker aan te raden _/-\o_

Nu ook zonder stropdas


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 04:03
Wat is nu het nut van die gele dingen die zomaar los in de lucht zweven?

Verwijderd

Topicstarter
Die gele dingen zijn de volgende posities van de zwarte bal.

Dus je moet altijd de zwarte bal raken
De grote gele is de volgende positie waar de zwarte bal verschijnt
de kleine gele is de positie daar weer na

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 04:03
Ah :)
Da's wel nuttige informatie.
Pagina: 1