Tyhmät kysymykset (I/2010)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
Mamaruki

Re: Tyhmät kysymykset (I/2010)

Post by Mamaruki »

Eli tässä tälläinen ''Tyhmä Kysymys''

1. Kuinka saan vihollisen menemään Alas ylös alas ylös kokoajan että aina kun se menee alas päin niin se myöäs katsoo alaspäin
2. Kuinka saan silleensä että kun osun viholliseen niin näyttöön tulee lukemaan GAME OVER.

Ps. Olen Aloittelija tässä Coolbasicissa
Ps2. Peli on kuvattu ylhäältä päin.
User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Tyhmät kysymykset (I/2010)

Post by Jonez »

Jos olet täysi aloittelija, suosittelen tekemään ylhäältätehdyt ukonliikuttamispelit sen mallin mukaan mitä cb:n oppitunneissa on näytetty. Eli periaatteessa yhdistät oppitunnit 11 ja 18.

Vastaan kuitenkin kysymyksiisi:
1.
Lataa ukkosi kuva objektina, pyöritysarvolla 4. Ks. funktion LoadObject(). Sen jälkeen tarkastat silmukassa mihin suuntaan ukko liikkuu ja käännät sen mukaan komennolla RotateObject. Liikuta itse ukkoa komennolla TranslateObject.

Code: Select all

//Ladataan ukko-objekti pyörotysarvolla 4, eli sen kuva voi kääntyä neljään eri suuntaan.
ukko = LoadObject( "media\guy.bmp", 4 )

Repeat
    
    //Liikutetaan ukkoa
    suuntaX = RightKey() - LeftKey()
    suuntaY = UpKey() -  DownKey() 
    
    //Tarkastetaan suunta ja käännetään ukko siihen suuntaan
    If suuntaX = 1 Then
        RotateObject ukko, 0
    ElseIf suuntaX = -1 Then
        RotateObject ukko, 180
    ElseIf suuntaY = 1 Then
        RotateObject ukko, 90
    ElseIf suuntaY = -1 Then
        RotateObject ukko, 270
    EndIf
    
    //Liikutetaan ukkoa. Huomaa translateobject
    nopeus = 5
    TranslateObject ukko, suuntaX * nopeus, suuntaY * nopeus

    DrawScreen
Forever
Kysymys 2:
Tarkasta vihollisen ja ukon törmäys funktiolla ObjectsOverlap() (ks. esimerkki manuaalista). Kun törmäys tapahtuu, pysäytät pelin tai siirryt toiseen silmukkaan. Pelin pysäytyksen voi tehdä esim näin: luot muuttujan nimeltä pause, ja laitat koko pelisi ehtolauseeseen: If Not pause Then ... //Pelin koodia ... Endif. Kun pause = True, peli pysähtyy. Voit tehdä vaihtoehtoisen tapahtuman (siis kun pause on päällä) käyttämällä Elseä tai ElseIffiä:

Code: Select all

ukko = LoadObject( "media\guy.bmp", 72 )
Repeat

    If KeyHit( CbKeyP ) Then
        pause = Not pause
        ClearKeys()
    EndIf

    If Not pause Then
        MoveObject ukko, 5
        TurnObject ukko, 5
    Else
        inf$ = "Peli o"+"n pausella. Paina p jatkaaksesi"
        Text ScreenWidth() / 2 - TextWidth( inf ) / 2, ScreenHeight() / 2, inf
    EndIf

    DrawScreen
Forever
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War
DJ-Filbe
Devoted Member
Posts: 854
Joined: Sat Feb 20, 2010 2:18 pm

Re: Tyhmät kysymykset (I/2010)

Post by DJ-Filbe »

Code: Select all

SCREEN 640,480,0,0
kulma=0
x#=600
y#=300

Type pisteet
    Field x#
    Field y#
EndType
piste.pisteet = New (pisteet)
pistenyt=1
lisä#=0.2
kamerax#=0
kameray#=0
Repeat
    lisä +0.02
    pistenyt +1
    piste\x = x
    piste\y = y
    x=x+(Cos(kulma)*2)+lisä
    y=y+(-Sin(kulma)*2)+0.4
   If kulma < 360 Then kulma +5 Else kulma=0
   
   For piste.pisteet = Each pisteet
       Dot piste\x - kamerax, piste\y - kameray
   Next piste
   If pistenyt mod 5 = 0 Then DrawScreen
   kamerax = kamerax + (KeyDown(205) - KeyDown(203))*3
   kameray = kameray + (KeyDown(208) - KeyDown(200))*3
Forever

Mikä mättää? Mav tulee kun käytetään Dot -komentoa.
JATothrim
Tech Developer
Tech Developer
Posts: 606
Joined: Tue Aug 28, 2007 6:46 pm
Location: Kuopio

Re: Tyhmät kysymykset (I/2010)

Post by JATothrim »

DJ-Filbe wrote:Mikä mättää? Mav tulee kun käytetään Dot -komentoa.
For Each loopin jälkeen 'piste' kokoelmamuuttuja osoittaa NULL:iin ja ohjelma kaatuu toisella kierroksella 'piste\x = x' kohtaan. Protip: käytä ForEach loopeissa aina uniikkia kokoelmamuuttujaa.
Tämä olikin aika harvinainen kysymys kokoelmista. 8-)
-On selkeästi impulsiivinen koodaaja joka...
ohjelmoi C++:lla rekursiivisesti instantioidun templaten, jonka jokainen instantiaatio instantioi sekundäärisen singleton-template-luokan, jonka jokainen instanssi käynistää säikeen tulostakseen 'jea'.
DJ-Filbe
Devoted Member
Posts: 854
Joined: Sat Feb 20, 2010 2:18 pm

Re: Tyhmät kysymykset (I/2010)

Post by DJ-Filbe »

JATothrim wrote:
DJ-Filbe wrote:Mikä mättää? Mav tulee kun käytetään Dot -komentoa.
For Each loopin jälkeen 'piste' kokoelmamuuttuja osoittaa NULL:iin ja ohjelma kaatuu toisella kierroksella 'piste\x = x' kohtaan. Protip: käytä ForEach loopeissa aina uniikkia kokoelmamuuttujaa.
Tämä olikin aika harvinainen kysymys kokoelmista. 8-)
Joo, "piste.pisteet = new (pisteet)" -koodi puuttui ennen noita uusia x ja y -pisteiden määrittelyjä :)

Eli tässä korjattu koodi ja samalla ensimmäinen kosini-sini -testailuni:

Code: Select all

SCREEN 640,480,0,0
kulma=0
x#=600
y#=300

Type pisteet
    Field x#
    Field y#
EndType
piste.pisteet = New (pisteet)
pistenyt=1
lisä#=0.2
kamerax#=0
kameray#=0
Repeat
    lisä +0.02
    pistenyt +1
    piste.pisteet = New (pisteet)
    piste\x = x
    piste\y = y
    x=x+(Cos(kulma)*2)+lisä
    y=y+(-Sin(kulma)*2)+0.4
   If kulma < 360 Then kulma +5 Else kulma=0
  
   For piste.pisteet = Each pisteet
       Dot piste\x - kamerax, piste\y - kameray
   Next piste
   
   If pistenyt Mod 5 = 0 Then DrawScreen
   kamerax = kamerax + (KeyDown(205) - KeyDown(203))*3
   kameray = kameray + (KeyDown(208) - KeyDown(200))*3
Forever



MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: Tyhmät kysymykset (I/2010)

Post by MaGetzUb »

Hmm, mitähän tämä meinaa? Ehdotuksia ongelman korjaamiseksi? Tuli ohjelmaa ajettaessa.
Attachments
Ehh.png
Ehh.png (10.82 KiB) Viewed 9548 times
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: Tyhmät kysymykset (I/2010)

Post by esa94 »

MaGetzUb wrote:Hmm, mitähän tämä meinaa? Ehdotuksia ongelman korjaamiseksi? Tuli ohjelmaa ajettaessa.
cbRun näyttäisi korruptoituneen. Käännä ohjelma uudestaan?

Jos sekään ei toimi, asenna CB uudestaan.
Pate5
Artist
Artist
Posts: 551
Joined: Tue Aug 28, 2007 4:53 pm
Location: Vantaa

Re: Tyhmät kysymykset (I/2010)

Post by Pate5 »

MaGetzUb wrote:Hmm, mitähän tämä meinaa? Ehdotuksia ongelman korjaamiseksi? Tuli ohjelmaa ajettaessa.
Kokeile tuleeko uudestaan?
CoolBasic henkilökuntaa
Graafikko
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: Tyhmät kysymykset (I/2010)

Post by MaGetzUb »

Ei tule enää, Avira oli laittanut cbrunin karanteeniin virusepäilyn takia.
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
User avatar
Ruuttu
Devoted Member
Posts: 688
Joined: Thu Aug 30, 2007 5:11 pm
Location: Finland, Sipoo

Re: Tyhmät kysymykset (I/2010)

Post by Ruuttu »

Ymmärrän ihan hyvin että CoolBasic -ohjelman muistinkäyttö nousee kun videota aletaan toistaa PlayAnimation -komennolla. Onko kuitenkin ihan normaalia että muistinkäyttö ei koskaan pienene takaisin ennalleen sen jälkeen kun video on lakannut pyörimästä, ja jos sama videotiedosto toistetaan uudelleen, muistinkäyttöönkin tulee taas uusi korotus? Mitä teen väärin? On mahdotonta tehdä ohjelma joka toistaa videota uudelleen ja uudelleen vaikkapa kokonaisen päivän, jos muistinkäyttö kasvaa joka kierroksella.
Codemaster
Newcomer
Posts: 3
Joined: Thu Sep 09, 2010 5:30 pm

Re: Tyhmät kysymykset (I/2010)

Post by Codemaster »

Kuinka suoritan pienen ohjelmani? Tuo Compile/Run tai f5 ei näytä mitään tekevän. :?:
Viltzu
Guru
Posts: 1132
Joined: Sun Aug 26, 2007 5:45 pm
Location: Alavieska
Contact:

Re: Tyhmät kysymykset (I/2010)

Post by Viltzu »

Codemaster wrote:Kuinka suoritan pienen ohjelmani? Tuo Compile/Run tai f5 ei näytä mitään tekevän. :?:
Tuleeko mitään virheilmoitusta? Tai kenties virustorjunnalta mitään? Osa viruksentorjuntaohjelmistoista eivät pidä CB:stä :P Aseta CBEditor.exe, CB.exe sekä IDE kansiosta cbRun.exe ja CBCompiler.exe luotetuiksi ohjelmiksi.
Codemaster
Newcomer
Posts: 3
Joined: Thu Sep 09, 2010 5:30 pm

Re: Tyhmät kysymykset (I/2010)

Post by Codemaster »

Viltzu wrote:
Codemaster wrote:Kuinka suoritan pienen ohjelmani? Tuo Compile/Run tai f5 ei näytä mitään tekevän. :?:
Tuleeko mitään virheilmoitusta? Tai kenties virustorjunnalta mitään? Osa viruksentorjuntaohjelmistoista eivät pidä CB:stä :P Aseta CBEditor.exe, CB.exe sekä IDE kansiosta cbRun.exe ja CBCompiler.exe luotetuiksi ohjelmiksi.
Virustorjunta ei ole valittanut. Tosin kun painan pohjaan f5 niin tulee: Cant save this file. Check the writing permission.

Ja voisitteko vähän selventää tuota kansio hommaa?
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: Tyhmät kysymykset (I/2010)

Post by valscion »

Codemaster wrote:Virustorjunta ei ole valittanut. Tosin kun painan pohjaan f5 niin tulee: Cant save this file. Check the writing permission.
Koita ajaa CoolBasic järjestelmänvalvojana. Eli hiiren kakkosnapikalla klikkaat kuvaketta ja valitset "Suorita järjestelmänvalvojana" (tai "Run as Administrator" jos on enkuks)
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
Codemaster
Newcomer
Posts: 3
Joined: Thu Sep 09, 2010 5:30 pm

Re: Tyhmät kysymykset (I/2010)

Post by Codemaster »

VesQ wrote:
Codemaster wrote:Virustorjunta ei ole valittanut. Tosin kun painan pohjaan f5 niin tulee: Cant save this file. Check the writing permission.
Koita ajaa CoolBasic järjestelmänvalvojana. Eli hiiren kakkosnapikalla klikkaat kuvaketta ja valitset "Suorita järjestelmänvalvojana" (tai "Run as Administrator" jos on enkuks)
Taisimpa niin tehdä. (saksankielinen käyttöjärjestelmä) Mutta nyt se sanoo: Cant write source for compiler!
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: Tyhmät kysymykset (I/2010)

Post by valscion »

Codemaster wrote:
VesQ wrote:
Codemaster wrote:Virustorjunta ei ole valittanut. Tosin kun painan pohjaan f5 niin tulee: Cant save this file. Check the writing permission.
Koita ajaa CoolBasic järjestelmänvalvojana. Eli hiiren kakkosnapikalla klikkaat kuvaketta ja valitset "Suorita järjestelmänvalvojana" (tai "Run as Administrator" jos on enkuks)
Taisimpa niin tehdä. (saksankielinen käyttöjärjestelmä) Mutta nyt se sanoo: Cant write source for compiler!
No koitappa poistaa CoolBasic ja asentaa se uudelleen avaamalla se asennusohjelma myös järjestelmänvalvojana. Muista kuitenkin ottaa koodisi ja muut tavarasi varmaan talteen ennen CB:n poistamista ;)
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
JATothrim
Tech Developer
Tech Developer
Posts: 606
Joined: Tue Aug 28, 2007 6:46 pm
Location: Kuopio

Re: Tyhmät kysymykset (I/2010)

Post by JATothrim »

HM? Codemaster, kertoisitko tarkemmin mikä "(saksankielinen käyttöjärjestelmä)" sinulla on? Windows 7 tietoturvaa ruukattiin näet sille tasolle (jolla sen piti olla jo win2k:n aikana), että mm. Program Files(x86/x64) kansiolle on asetettu erityiset oikeudet ja jotkin ohjelmat eivät toimi näiden permissionien alla. (Mm. täydet kirjoitusoikeudet näyttävät puuttuvan normi puliaisilta. : / Kokeileppa tehdä uusi kansio sinne, niin windows kysyy lisää oikeuksia. :) )
Asenna siis CoolBasic uudestaan jonnekkin muualle kuin oletus hakemistoon.
-On selkeästi impulsiivinen koodaaja joka...
ohjelmoi C++:lla rekursiivisesti instantioidun templaten, jonka jokainen instantiaatio instantioi sekundäärisen singleton-template-luokan, jonka jokainen instanssi käynistää säikeen tulostakseen 'jea'.
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: Tyhmät kysymykset (I/2010)

Post by valscion »

JATothrim wrote:HM? Codemaster, kertoisitko tarkemmin mikä "(saksankielinen käyttöjärjestelmä)" sinulla on? Windows 7 tietoturvaa ruukattiin näet sille tasolle (jolla sen piti olla jo win2k:n aikana), että mm. Program Files(x86/x64) kansiolle on asetettu erityiset oikeudet ja jotkin ohjelmat eivät toimi näiden permissionien alla. (Mm. täydet kirjoitusoikeudet näyttävät puuttuvan normi puliaisilta. : / Kokeileppa tehdä uusi kansio sinne, niin windows kysyy lisää oikeuksia. :) )
Asenna siis CoolBasic uudestaan jonnekkin muualle kuin oletus hakemistoon.
Win7:sta saa asetetettua täydet kansion oikeudet tavallisillekin pulliaiskäyttäjille. Klikkaa vaan kansiota toisella napikalla, ja Suojaus-välilehden takaa (oiskos se saksaks joku "Schutz") niin saa normaaleillekin käyttäjille asetettua täydet oikeudet. Sillon pitäs homma skulata. (nimim. kokemusta on)
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
DJ-Filbe
Devoted Member
Posts: 854
Joined: Sat Feb 20, 2010 2:18 pm

Re: Tyhmät kysymykset (I/2010)

Post by DJ-Filbe »

Pitäisi saada toteutettua pelikenttä, joka on yksi iso kuva. Kuvan lataamisessa menee turhan kauan, joten mikä olisi fiksu keino pelikentän jakamiseen osiin niin että saisin latausajan pienemmäksi?
Olisiko niin että jaan kartan useampaan kuvaan ja lataan kuvia silloin kun ukko liikkuu kentällä?
User avatar
MetalRain
Active Member
Posts: 188
Joined: Sun Mar 21, 2010 11:17 am
Location: Espoo

Re: Tyhmät kysymykset (I/2010)

Post by MetalRain »

DJ-Filbe wrote:Pitäisi saada toteutettua pelikenttä, joka on yksi iso kuva. Kuvan lataamisessa menee turhan kauan, joten mikä olisi fiksu keino pelikentän jakamiseen osiin niin että saisin latausajan pienemmäksi?
Olisiko niin että jaan kartan useampaan kuvaan ja lataan kuvia silloin kun ukko liikkuu kentällä?
Oletko varma ettet koita ladata objektia? Tarviiko pelikentän olla juuri kuva? Mieti voitko toteuttaa haluamasi ominaisuudet muulla tavoin.

Voitko käyttää pienempää kuvaa ja venyttää sitä ohjelmassa isommaksi? Voitko laittaa kuvan kannalta tärkeät palat omiin kuviinsa ja sitten sommitella ne ohjemassa yhteen tyhjään kuvaan?

Jos jaat ison kuvan osiin niin silti niiden palojen lataus aiheuttaa pienen katkoksen peliin, mikä ei aina ehkä ole suotavaa. Siksi suosittelisin etsimään jonkin toisen ratkaisun.
Locked