Page 1 of 1

Auton "kiihtyvyys" esimerkki:

Posted: Wed Feb 16, 2011 9:03 pm
by TukeKoodi
Eli tämmönen esimerkki kuinka saada muuttujien avulla autoon asteittainen kiihdytys.
Kommentointi on mukana, ja noviiseille kivoja leikkejä lopussa :D
Koodi:

Code: Select all

//Esimerkki: Auton "liukuva" nopeus by TukeKoodi:

//Näytön koko
SCREEN 640,480

//Kuvia sekunissa korkeintaan 40
FrameLimit 40

//Tausta -> sininen
ClsColor cbBlue

//Lataa auto:
//Polku:
ukko1 = LoadObject ("Media\car2.bmp",72)

//Muuttujat nopeudelle ja nopeuden kasvulle:
//Huomaa:
//Kiihtyvyys hidastuu yli 3.0
//nopeudessa kts. Kiihtyvyyden hidastuminen
nopeus#=0
kasvu#=0.15
pois#=0.15
Repeat


MoveObject ukko1, nopeus

//Kääntyminen vain jos vauhti >0
    If LeftKey() And nopeus>0 Then TurnObject ukko1,5
    If RightKey() And nopeus>0 Then TurnObject ukko1,-5

//Jarrutus: JOS vasen nuoli() niin hidastuminen yli 2x nopeampaa
//="jarrutus"
If DownKey() Then
    pois=0.40
    Else
    pois=0.15
EndIf
   
    //Kiihtyvyys:
    If UpKey() Then
    nopeus+kasvu
    //Muuten  
    Else    
    nopeus-pois
    EndIf

//Ei saa mennä pakille:
If nopeus<0 Then nopeus=0

//Nopeus ei saa olla yli 4:
If nopeus>4.0 Then nopeus=4.0

//Kiihtyvyyden hidastuminen
If nopeus>3.0 Then
kasvu=0.01
Else
kasvu=0.15
EndIf

//"Nopeusmittari" :D
    Color cbBlack
    Text 0,0, "Nopeus: "+nopeus
    
    DrawScreen

Forever

//Aloittelijoille leikkeja:
//1) Muuta lukua rivillä 29
//2) Muuta lukua rivillä 31
//3) Poista rivi 43
//4) Poista rivi 46
//5) Muuta lukua rivillä 55
//5) Muuta lukua rivillä 56

Re: Auton "kiihtyvyys" esimerkki:

Posted: Wed Feb 16, 2011 9:53 pm
by MaGetzUb
Ihan vain sanoisin, että vaikka nopeus+kasvu, on helppo tapa korottaa lukua, niin silti koodaus syistä vaihtaisin nopeus+kasvu -> nopeus = nopeus + kasvu. :)

Re: Auton "kiihtyvyys" esimerkki:

Posted: Wed Feb 16, 2011 9:58 pm
by TukeKoodi
MaGetzUb wrote:Ihan vain sanoisin, että vaikka nopeus+kasvu, on helppo tapa korottaa lukua, niin silti koodaus syistä vaihtaisin nopeus+kasvu -> nopeus = nopeus + kasvu. :)
Eikös tuo ole sama onko se nopeus+kasvu vai nopeus=nopeus+kasvu, mitä eroa noilla on?

Re: Auton "kiihtyvyys" esimerkki:

Posted: Wed Feb 16, 2011 10:01 pm
by MaGetzUb
CoolBasicissa ei mitään, mutta muissa ohjelmointikielissä on. Ja minun mielestäni ainakin on nätimpää ja selkeämpää lukea "yleisillä käytännöillä" kirjoitettua koodia. :)

Re: Auton "kiihtyvyys" esimerkki:

Posted: Wed Feb 16, 2011 10:02 pm
by koodaaja
Jälkimmäinen on huomattavasti selkeämpi ja niin se toimii useissa muissakin kielissä. Parashan olisi nopeus += kasvu, mutta sitä ei CB:stä valitettavasti löydy.

Re: Auton "kiihtyvyys" esimerkki:

Posted: Thu Feb 24, 2011 2:10 am
by Dimple
koodaaja wrote:Jälkimmäinen on huomattavasti selkeämpi ja niin se toimii useissa muissakin kielissä. Parashan olisi nopeus += kasvu, mutta sitä ei CB:stä valitettavasti löydy.
Tuo nyt menee jo kikkailuksi.

Usein (ja erityisesti tässä tapauksessa) mielestäni selkeys > kompaktius, eli "nopeus = nopeus + kasvu". Etenkin C++-koodista saa aikamoista sillisalaattia koodamalla mahdollisimman kompaktisti.

Re: Auton "kiihtyvyys" esimerkki:

Posted: Thu Feb 24, 2011 4:19 pm
by Koodiapina
Dimple wrote:
koodaaja wrote:Parashan olisi nopeus += kasvu
Usein (ja erityisesti tässä tapauksessa) mielestäni selkeys > kompaktius, eli "nopeus = nopeus + kasvu".
Asian selkeyden määrä on riippuvainen tarkastelevasta subjektista. Esimerkiksi minun mielestäni "nopeus += kasvu" on yhtä selkeä kuin "nopeus = nopeus + kasvu".

Re: Auton "kiihtyvyys" esimerkki:

Posted: Thu Feb 24, 2011 8:26 pm
by Dimple
Grandi wrote:
Dimple wrote:
koodaaja wrote:Parashan olisi nopeus += kasvu
Usein (ja erityisesti tässä tapauksessa) mielestäni selkeys > kompaktius, eli "nopeus = nopeus + kasvu".
Asian selkeyden määrä on riippuvainen tarkastelevasta subjektista. Esimerkiksi minun mielestäni "nopeus += kasvu" on yhtä selkeä kuin "nopeus = nopeus + kasvu".
Lainataanpas kunnolla jos lainataan. Laitoin tuon kommentin omaan kappaleeseensa siksi, ettei se enää liittynyt siihen mitä lainasin.

Olen kuitenkin samaa mieltä, että "nopeus += kasvu" on yhtä selkeä kuin "nopeus = nopeus + kasvu", mutta ensimmäistä muota ei CB:ssä voi käyttää, joten jätin sen pois.

Re: Auton "kiihtyvyys" esimerkki:

Posted: Thu Feb 24, 2011 8:44 pm
by Koodiapina
Dimple wrote:Lainataanpas kunnolla jos lainataan. Laitoin tuon kommentin omaan kappaleeseensa siksi, ettei se enää liittynyt siihen mitä lainasin.
Pelkkä kappaleen vaihtaminen ei riitä esittämään, että et enää viittaa lainaamaasi viestiin. On nimittäin tavallista vastata lainattuun tekstiin monikappaleisellakin tekstillä.

Re: Auton "kiihtyvyys" esimerkki:

Posted: Fri Feb 25, 2011 11:16 am
by Dimple
Pointti oli että tämä:
Dimple wrote:
koodaaja wrote:Jälkimmäinen on huomattavasti selkeämpi ja niin se toimii useissa muissakin kielissä. Parashan olisi nopeus += kasvu, mutta sitä ei CB:stä valitettavasti löydy.
Tuo nyt menee jo kikkailuksi.

Usein (ja erityisesti tässä tapauksessa) mielestäni selkeys > kompaktius, eli "nopeus = nopeus + kasvu". Etenkin C++-koodista saa aikamoista sillisalaattia koodamalla mahdollisimman kompaktisti.
Oli muuttunut täksi:
Dimple wrote:
koodaaja wrote:Parashan olisi nopeus += kasvu
Usein (ja erityisesti tässä tapauksessa) mielestäni selkeys > kompaktius, eli "nopeus = nopeus + kasvu".
Ensimmäisen voi näköjään tulkita ainakin kahdella eri tavalla, jälkimmäisen vain sinun omallasi. Eli vääristelit vastaustani. Ainakin minun mielestäni.

Re: Auton "kiihtyvyys" esimerkki:

Posted: Sat Feb 26, 2011 8:55 pm
by Koodiapina
Dimple wrote:Ensimmäisen voi näköjään tulkita ainakin kahdella eri tavalla, jälkimmäisen vain sinun omallasi. Eli vääristelit vastaustani. Ainakin minun mielestäni.
Minä tulkitsin viestisi juuri sillä tavoin kuin annoit sen tulkita. Kuten sanoin, pelkkä kappaleen vaihtaminen ei riitä ilmaisemaan, että et enää viittaa lainattuun tekstiin. Jos et kerro sitä jollain tavalla, et voi myöskään olettaa lukijan arvaavan sitä. Näin ollen on oikein tulkita, että toinen kappale on samaa sarjaa ensimmäisen kanssa, koska et antanut perusteita tulkita asiaa muulla tavalla. Kyse on nyt siitä, että ilmaisit itsesi väärin/puutteellisesti.

Sitä paitsi et voi kirjoittaa omasta mielestäsi moniselitteisiä viestejä (poislukien ironia), ja sitten vedota siihen, että ne olisi voinut käsittää jollain muullakin tavalla. Lukijalla on lupa olettaa, että tarkoitat yksiselitteisesti sitä, mitä sanot.

Re: Auton "kiihtyvyys" esimerkki:

Posted: Sun Feb 27, 2011 1:56 am
by mikeful
Vähemmän offtopikkia. Enemmän asiaa.

Re: Auton "kiihtyvyys" esimerkki:

Posted: Sun Feb 27, 2011 2:46 pm
by Dimple
Tuota esimerkkiä voisi vielä jatkaa vaikkapa niin, että lisäisi jonkin yksinkertaisen vaihde-systeemin. Sen voisi vaikkapa postata tämän ketjun jatkoksi.

Se voisi esimerkiksi toimia jotenkin näin: lisätään nopeusmittarin rinnalle kierroslukumittari. Jos kierrokset ovat alle tietyn rajan, kiihtyvyys on huomattavan hidas. Jos kierrokset saavuttavat tietyn ylärajan, kiihtyvyys loppuu kokonaan ja vauhti pysyy vakiona. Vaihtamalla isommalla vaihteelle kierrosluku pienenee. Kierrosluvun voisi ehkä laskea suoraan nopeudesta kertoimella, joka riippuu vaihteesta? Kierroslukumittari olisi siis lähinnä pelaajalle apuna.

Re: Auton "kiihtyvyys" esimerkki:

Posted: Sun Feb 27, 2011 3:25 pm
by koodaaja
Jos halutaan auton toiminnasta loogisempaa ja helpommin pääteltävää, uskoisin että on helpompi lähteä liikkeelle juuri päinvastoin - moottorin kierroslukuahan kaasulla säädellään, nopeus määräytyy sitten vaihteen mukaan. Samalla systeemiin voi viritellä manuaalivaihteet ja vaikka kytkimen, jos joku sellaisista tykkää :)

Re: Auton "kiihtyvyys" esimerkki:

Posted: Sun Feb 27, 2011 3:35 pm
by Valtzu
Joskus tuli tämän ongelman kanssa värkkäiltyä. viewtopic.php?p=878#p878

Re: Auton "kiihtyvyys" esimerkki:

Posted: Sun Feb 27, 2011 4:03 pm
by valscion
Valtzu wrote:Joskus tuli tämän ongelman kanssa värkkäiltyä. viewtopic.php?p=878#p878
Tuossa on ainoa ongelma se että jos painaa kaasua kun vaihdetaan ylemmältä vaihteelta alemmalle, hyppää nopeus suoraan sen alemman vaihteen maksimiin (siis jos nopeus oli ennen maksimia suurempi). Jos kaasua ei paineta, tippuu nopeus oikealla tavalla alaspäin. Hauska vaan huomata miten se kierrosluku nousee ihan huikeesti, jos tiputetaan korkeammalta vaihteelta nopeasti alas kovassa vaihteessa - aivan kuin oikeassa elämässäkin :). Sitten jos tuosta ottaa koodia omaan peliin pitäis lisätä moottoririkko jos RPM nousee yli 6000 tai vastaavaa :P

Re: Auton "kiihtyvyys" esimerkki:

Posted: Sun Feb 27, 2011 7:08 pm
by Dimple
koodaaja wrote:Jos halutaan auton toiminnasta loogisempaa ja helpommin pääteltävää, uskoisin että on helpompi lähteä liikkeelle juuri päinvastoin - moottorin kierroslukuahan kaasulla säädellään, nopeus määräytyy sitten vaihteen mukaan. Samalla systeemiin voi viritellä manuaalivaihteet ja vaikka kytkimen, jos joku sellaisista tykkää :)
Noinhan se oikeasti menee, ja olisi varmaan suurin piirtein yhtä helppo toteuttaa.

Valtzun esimerkki on kyllä hyvä, mutta täysin aloittelijalle voi olla ehkä vähän haastavaa toteuttaa tuollaista systeemiä muuten kuin copy-pastella (ymmärtäminen voi jäädä aika pinnalliseksi). Muille kuin aloittelijoille sen ei pitäisi olla liian vaikeaa.