Tyhmät kysymykset (I/2009)

Voit pyytää apua ohjelmointiongelmiin täältä.
Ozcar
Advanced Member
Posts: 439
Joined: Mon Aug 27, 2007 8:43 pm
Location: Helsinki

Re: Tyhmät kysymykset

Post by Ozcar »

Hyvä ihme, rekisteröidy nyt ensin ja EDITOI viestiisi.

No, taulukot toimivat näin: kun teet taulukon, nimeät sen Dim-komennolla jonka jälkeen kerrot, kuinka monta solua sille tehdään. Älä huoli muusta, nämä ovat automaattisesti globaaleja. Tämä solujen määrä tarkoittaa tasan samaa, kuin jos loisit kymmenittäin omia muuttujiaan. Esim Dim vihu(10) vastaa periaatteessa 11 eri vihu-muuttujaa (nolla on aina yksi solu!). Näihin jokaiseen muuttujaan ( vihu1, vihu2, vihu3 jne...) voit tallettaa oman arvonsa ihan vain merkitsemällä vihu(numero) = haluttu arvo. Tämä siis ei tarkoita, että yhdellä muuttujalla olisi monia arvoja, vaan tämä on vain tapa koota samanlaisia muuttujia yhden nimen alle. Kun haluat käyttää näitä, kutsut niitä vihu(numero), esim If vihu(2) = 5 Then do_something() EndIf. Useiten tosin tässä käytetään For - Next-looppia, jolla voi nopeasti käydä kaikki taulukon solut läpi järjestyksessä. Jos vaikka haluat tarkistaa, onko minkään vihu-muuttujan arvo 5, kutsut..

Code: Select all

For muuttuja = 0 To 10 Step 1
If vihu(muuttuja) = 5 Then // joka loopin kierroksella muuttujan arvo nousee, eli se on järjestyksessä 0-10. Eli kaikki solut käydään läpi järjestyksessä
do_something()
EndIf
Next muuttuja
Selvensikö?
Ratkaisit juuri universaaliongelman! Hienoa, ota keksi.

Filosofia on ajattelun taidetta, mutta sen maalari elää juoden apurahojaan masennukseensa.
Character
Active Member
Posts: 113
Joined: Thu Nov 27, 2008 2:16 pm

Re: Tyhmät kysymykset

Post by Character »

Voi olla tyhmä kysymys mutta miten Siniä ja Cosia käytetään? En ymmärtänyt manuaalin ohjeita..
Jonhu
Active Member
Posts: 186
Joined: Mon Aug 04, 2008 5:45 pm

Re: Tyhmät kysymykset

Post by Jonhu »

Character wrote:Voi olla tyhmä kysymys mutta miten Siniä ja Cosia käytetään? En ymmärtänyt manuaalin ohjeita..
Jos et ole opetellut laskemaan koulussa sininiä ja cosinia (opetetaan 8:lla tai 7:llä luokalla) niin voi olla haastavaa.. Sininin ja cosinin avulla saat laskettua monia hyödyllisiä tietoja, jotka muuten olisi hidasta / mahdotonta toteuttaa.. :)
Tietoa sininistä, cosinista, tangentista, yms.
http://fi.wikipedia.org/wiki/Trigonometrinen_funktio

EDIT: Itselle opetettiin kahdeksannen luokan puolivälissä... Opetussuunnitelmat vaihtuvat, joten sanotaan, että opetetaan yläasteella. Tuon Wikipedian sivut sattuivat olemaan vähän vaikeampaa matematiikkaa, mutta googlesta löydät varmaan yksinkertaisempia esimerkkejä.

esim viiva objectista functio...

Code: Select all

SCREEN 800,600

cannon  = LoadObject( "media\cannon.bmp", 72 )

Repeat

    ankle# = -GetAngle(MouseWX(),MouseWY(),ObjectX(cannon),ObjectY(cannon))+180
    
    RotateObject cannon,ankle#

    voima#=voimaviiva(ObjectX(cannon),ObjectY(cannon),MouseWX(),MouseWY(),2,150)
    
    Text 10,10,"Voima: "+voima#

    DrawScreen 
    
Until EscapeKey()


Function voimaviiva(x1#,y1#,x2#,y2#,paksuus,maxpituus)
    pituus# = Distance(x1#,y1#,x2#,y2#)           // mittaa etäisyyden
    angle#  = -GetAngle(x1#,y1#,x2#,y2#)          // mittaa kulman
    If pituus#>maxpituus Then pituus#=maxpituus // rajoittaa viivan pituuden
    r=0 : g=180 : b=0          // määrää värit
    For a=1 To RoundUp(pituus#)
        Color r,g,b      // asettaa värit
        xn2# = x1# + Sin(angle# + 90)*(a) +ScreenWidth()/2
        yn2# = -y1# - Cos(angle# - 90)*(a) +ScreenHeight()/2
        Circle xn2#-paksuus/2,yn2#-paksuus/2,paksuus,1  // piirtää ympyrän yllä laskettuun kohtaan
        //värien säätelyä...
        If a<maxpituus/3                       
            r + 3   : g + 4
        ElseIf maxpituus/3<a And a<maxpituus*(2/3)
            r + 3 : g - 1
        ElseIf maxpituus*(2/3)<a And a<maxpituus 
            r + 3 : g - 2
        EndIf
        If  b > 255 : b=255 : ElseIf  b < 0 : b=1 : EndIf
        If  g > 255 : g=255 : ElseIf  g < 0 : g=1 : EndIf
        If  r > 255 : r=255 : ElseIf  r < 0 : r=1 : EndIf
    Next a
    Return pituus# //palauttaa pituuden arvon
EndFunction
Last edited by Jonhu on Thu Nov 27, 2008 10:05 pm, edited 1 time in total.
Ozcar
Advanced Member
Posts: 439
Joined: Mon Aug 27, 2007 8:43 pm
Location: Helsinki

Re: Tyhmät kysymykset

Post by Ozcar »

Nopeasti: sin, cos ja tan kertovat suorakulmaisen kolmion hypotenuusan ja kateettien mittasuhteet kulmasta. Todella kätevä kunhan oppii hieman soveltamaan ;). Esim. cos 40 * 60 kertoo, miten pitkä olisi kolmion alasivu jos sen pitkä, vino sivu (hypotenuusa) on 60px pitkä. Eli jos haluat pisteestä 40 asteen kulmaan ja 60pix päähän pisteen, tuolla saat laskettua mitä se tekee suoraan x-koordinaatin lisäyksenä. Sin 40 * 60 taas kertoisi y-koordinaatin arvon. Koulu on paras paikka oppia nämäkin.
Ratkaisit juuri universaaliongelman! Hienoa, ota keksi.

Filosofia on ajattelun taidetta, mutta sen maalari elää juoden apurahojaan masennukseensa.
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: Tyhmät kysymykset

Post by Koodiapina »

Jonhu wrote:Jos et ole opetellut laskemaan koulussa sininiä ja cosinia (opetetaan 8:lla tai 7:llä luokalla)
Näin pienenä offtopicina: Meidän koulussa trigonometriaa opetetaan vasta yhdeksännellä luokalla.
Ozcar
Advanced Member
Posts: 439
Joined: Mon Aug 27, 2007 8:43 pm
Location: Helsinki

Re: Tyhmät kysymykset

Post by Ozcar »

Älä turhaan käytä aikaasi liian teorian lukuun, itseäni se ei ainakaan hyödyttänyt lainkaan. Vain ankara koodaussäätö auttoi lopulta ymmärtämään näiden pikkukaverien merkityksen. Kerran luet teorian ja sitten palloja pyörittelemään, hopi hopi.
Ratkaisit juuri universaaliongelman! Hienoa, ota keksi.

Filosofia on ajattelun taidetta, mutta sen maalari elää juoden apurahojaan masennukseensa.
User avatar
Substance
Active Member
Posts: 234
Joined: Fri Mar 14, 2008 5:48 pm

Re: Tyhmät kysymykset

Post by Substance »

Tässä (ei ehkä oikea, mutta toimiva ja yksinkertainen) tapa ymmärtää trigonometrisiä funktioita:

Cos on x:lle.
Cos(0) on 1
Cos(180) on -1
Cos(90) ja Cos(270) ovat 0
Mitä kauempana cosiniin laitettu kulma on pystysuorasta, niin sitä kauempana tulos on nollasta.

Sin on y:lle.
Sin(90) on 1
Sin(270) on -1
Sin(0) ja Cos(180) ovat 0
Mitä kauempana siniin laitettu kulma on vaakatasosta, niin sitä kauempana tulos on nollasta.

Tan on viistoon.
Tan(45) ja Tan(225) ovat 1
Tan(135) ja Tan(315) ovat -1
Mitä kauempana taniin laitettu kulma on vaakatasosta ja pystysuorasta, niin sitä kauempana tulos on nollasta.

Korjatkaa, jos olen väärässä.
Substance aka LittleGreen
Red Encounter - shoot'em uppia - lataus
Sepi
Member
Posts: 84
Joined: Thu Jun 05, 2008 1:38 pm

Re: Tyhmät kysymykset

Post by Sepi »

Mistä voi johtua jos MAV tulee sulkiessa ohjelmaa? Siis sitä ei esiinny muuten kuin suljettaessa ohjelma.

E: Sain jo ratkaistua :)
GhostObject

Re: Tyhmät kysymykset

Post by GhostObject »

Kun(liikkuvan)objectin laittaa läpinäkyväksi GhostObjectilla, tämä syö aika lailla tehoja?
Kuinka paljon tehoja siis syö liikkumaton, pelkästään kartan päällä oleva yksi-kaksivärinen kuva, jonka päältä vain kävellään?(läpinäkyvyys 40-60)
Vaikuttaako tämä liikaa pelin pyörimiseen, jos tälläisiä kuvia on kentällä näkyvissä 80-120?
MAVmaggot
Advanced Member
Posts: 468
Joined: Fri Aug 31, 2007 10:18 pm
Location: bitspace

Re: Tyhmät kysymykset

Post by MAVmaggot »

Riippuu täysin kuvan koosta, mutta jos niitä on 80-120 voisinpa melkein sanoa että vaikuttaa ja paljon.
kemp250
Newcomer
Posts: 24
Joined: Fri Nov 14, 2008 5:39 pm
Location: En voi kertoa. He voivat kuunnella meitä.

Re: Tyhmät kysymykset

Post by kemp250 »

pystyn ampumaan tietyn määrän panoksia ja sitten tämä alkaa MAV:ittaa...
sen verran sain selville että pystyn ampumaan niin monta panosta kun vihun tuhoomiseen tarvittas, mut sit alkaa MAVittaa.
En vaan silti löydä vikaa... :oops:

Code: Select all

SCREEN 900,900
Type AMMUS 
    Field obj
End Type 

FrameLimit 40 'rajaa nopeutta

botti = LoadObject("C:\Program Files\CoolBasic\MeMedia\botti.bmp",72)
ukko = LoadObject("C:\Program Files\CoolBasic\MeMedia\soldier.bmp",72)
pati = LoadObject("C:\Program Files\Coolbasic\MeMedia\panos2.bmp",72)
ShowObject pati,OFF

CloneCameraPosition ukko


AddText "tapa robotti!" 'anna ohjeet



Repeat

    ukko_life=100
    botti_life=300    


    
    If LeftKey() Then TurnObject ukko,5 'liikuta ukkoa
    If RightKey() Then TurnObject ukko,-5
    If UpKey() Then MoveObject ukko,5
    If DownKey() Then MoveObject ukko,-2
    If KeyDown(cbkeyM) Then MoveObject ukko,15
    
    If KeyDown(cbkeyA) Then TurnObject botti,5  'liikuta vihua
    If KeyDown(cbkeyD) Then TurnObject botti,-5
    If KeyDown(cbkeyW) Then MoveObject botti,3
    If KeyDown(cbkeyS) Then MoveObject botti,-1
    
    If KeyDown(cbKeyRControl) And reload=0 Then   'ampumisjuzka 
        luoti.AMMUS = New(AMMUS)
        luoti\obj=CloneObject(pati)
        CloneObjectPosition luoti\obj,ukko                
        CloneObjectOrientation luoti\obj,ukko            
        reload=5        
    EndIf
    If reload>0 Then reload=reload-1

    For luoti.AMMUS = Each AMMUS
        MoveObject luoti\obj,10
                       
If ObjectsOverlap(pati,botti) Then   'ammus osuu = vastustaja menettää
botti_life -20
If botti_life < 1 Then
DeleteObject botti
EndIf
EndIf





          Text 10,10,"ukon energia - "+ukko_life
     Text 700,10,"robotin energia - "+botti_life 
      Box 10,25,p1_life,10,OFF
     

           
           If KeyDown(cbkeyescape)
        EndIf        
    Next luoti

    
    
    DrawGame

    
    
    DrawScreen

Forever




"Working" for GameTailors.

Projektit:
Tower Climber, 23%
Avaruusjalkkisjuttu jossa ei ole jalkoja eikä palloja, 19%

I have been using coolbasic many years. I just fail a lot.
User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Tyhmät kysymykset

Post by Jonez »

Mavi johtuu yleensä siitä virheestä, että tiettyä mediaa yritetään käyttää vaikka sitä ei ole. Tässä tapauksessa käytät objektia botti senkin jälkeen kun se on tuhottu (eli ammuttu). Itse mavi tulee kohdassa:

Code: Select all

If ObjectsOverlap(pati,botti) Then 
Tee vaikka botti_elossa-muuttuja, jolla tarkastat onko botti elossa ennen kuin teet siihen törmäystunnistuksia yms. Toinen, parempi tapa on tehdä botti käyttäen tyyppejä.
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War
rami123
Advanced Member
Posts: 354
Joined: Mon Jun 23, 2008 8:20 pm
Location: Kittilä

Re: Tyhmät kysymykset

Post by rami123 »

olenko ymmärtänyt oikein? että gosubia voi käyttää kaupan tekoon?

esim näin :

Code: Select all

peli:

pelin sisältöä

repeat

if keyhit (cbkeyk) then gosub kauppa

forever   (Tiedän tärkeitä komentoja puuttuu...)

kauppa:

kaupan sisältöä

forever 
mulla toimii tuo että se menee kauppaan mutta en tiedä miten sieltä pääsee sitten pois?
DatsuniG
Advanced Member
Posts: 367
Joined: Fri Aug 15, 2008 9:57 pm

Re: Tyhmät kysymykset

Post by DatsuniG »

Vinkkinä komento: Return
Hengität nyt manuaalisesti.
rami123
Advanced Member
Posts: 354
Joined: Mon Jun 23, 2008 8:20 pm
Location: Kittilä

Re: Tyhmät kysymykset

Post by rami123 »

mutta miten return toimii? Luin kyllä..
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: Tyhmät kysymykset

Post by valscion »

Return palaa siihen kohtaan koodia mistä GoSubbia kutsuttiin.
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
rami123
Advanced Member
Posts: 354
Joined: Mon Jun 23, 2008 8:20 pm
Location: Kittilä

Re: Tyhmät kysymykset

Post by rami123 »

Code: Select all

peli:

pelin sisältöä

repeat

if keyhit (cbkeyk) then gosub kauppa

forever   (Tiedän tärkeitä komentoja puuttuu...)

kauppa:

kaupan sisältöä

return
forever 
jos noin tarkoitit niin se heittää mavia :(
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: Tyhmät kysymykset

Post by valscion »

rami123 wrote:

Code: Select all

peli:

pelin sisältöä

repeat

if keyhit (cbkeyk) then gosub kauppa

forever   (Tiedän tärkeitä komentoja puuttuu...)

kauppa:

kaupan sisältöä

return
forever 
jos noin tarkoitit niin se heittää mavia :(
Tuo forever tuolta lopusta pois. Tämän pitäisi ainakin toimia:

Code: Select all

peli:

//pelin sisältöä

repeat

  Text 0,100,"heihei"
  if keyhit(cbkeyk) then gosub kauppa

  DrawScreen
forever   //(Tiedän tärkeitä komentoja puuttuu...)

kauppa:

AddText "Moijjj"

return
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
rami123
Advanced Member
Posts: 354
Joined: Mon Jun 23, 2008 8:20 pm
Location: Kittilä

Re: Tyhmät kysymykset

Post by rami123 »

juu toimii ,mutta kun sieltä otettiin forever pois ja kaupasa o kuva niin miten sille? sitten heittää mavia ..
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: Tyhmät kysymykset

Post by valscion »

rami123 wrote:juu toimii ,mutta kun sieltä otettiin forever pois ja kaupasa o kuva niin miten sille? sitten heittää mavia ..
MAVittaa jostain toisesta syystä kuin GoSubista. Heitäppä koodia niin saadaan tietää syy.
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
Locked