Tyhmät kysymykset (I/2009)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
TheFish
Developer
Developer
Posts: 477
Joined: Mon Aug 27, 2007 9:28 pm
Location: Joensuu

Re: Tyhmät kysymykset

Post by TheFish »

kemp250 wrote:Miks tää MAVittaa?

Code: Select all

SCREEN 600,600
solttu=LoadObject ("C:\Program Files\CoolBasic\MeMedia\soldier.bmp")
botti=LoadObject ("C:\Program Files\CoolBasic\MeMedia\botti.bmp")
cur=LoadObject ("C:\Program Files\CoolBasic\MeMedia\tähtäin.bmp")

PositionObject tatti, 60,0
PositionObject solttu, -60,0

Repeat

Text 237, 250,"Valitse hahmosi"
If UpKey() Then MoveObject cur, 0,-2
If DownKey() Then MoveObject cur, 0,2
If RightKey() Then MoveObject cur, 2,0
If LeftKey() Then MoveObject cur, -2,0
If KeyHit(cbkeyspace) And ObjectsOverlap (cur, tatti,1) Then
ukko=tatti
Goto alku
EndIf
If KeyHit(cbkeyspace) And ObjectsOverlap (cur, solttu,1) Then
ukko=solttu
Goto alku
EndIf
If KeyHit(cbkeyspace) And ObjectsOverlap (cur, cow,1) Then
ukko=cow
Goto alku
EndIf
DrawScreen
Forever
P.S.toi on vaan se mavittava osa koodia
Tuon koodinpätkän perusteella veikkaisin mavin johtuvan siitä, että yrität käyttää 'tatti' objektia joka tuhoutui kutsuessasi screen-komentoa (se tuhoaa kaikki objektit muistista).
CoolBasic henkilökuntaa
Kehittäjä
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 »

oho! kiitti, TheFish! Pelkkä huolimattomuusvirhe, enkä huomannu vaik kuinka yritin :oops:
"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
-Z-
Devoted Member
Posts: 682
Joined: Tue Aug 28, 2007 3:33 pm
Location: In ur danmaku, grazin ur bullets

Re: Tyhmät kysymykset

Post by -Z- »

kemp250 wrote:Miks tää MAVittaa?

Code: Select all

SCREEN 600,600
solttu=LoadObject ("C:\Program Files\CoolBasic\MeMedia\soldier.bmp")
botti=LoadObject ("C:\Program Files\CoolBasic\MeMedia\botti.bmp")
cur=LoadObject ("C:\Program Files\CoolBasic\MeMedia\tähtäin.bmp")

PositionObject tatti, 60,0
PositionObject solttu, -60,0

Repeat

Text 237, 250,"Valitse hahmosi"
If UpKey() Then MoveObject cur, 0,-2
If DownKey() Then MoveObject cur, 0,2
If RightKey() Then MoveObject cur, 2,0
If LeftKey() Then MoveObject cur, -2,0
If KeyHit(cbkeyspace) And ObjectsOverlap (cur, tatti,1) Then
ukko=tatti
Goto alku
EndIf
If KeyHit(cbkeyspace) And ObjectsOverlap (cur, solttu,1) Then
ukko=solttu
Goto alku
EndIf
If KeyHit(cbkeyspace) And ObjectsOverlap (cur, cow,1) Then
ukko=cow
Goto alku
EndIf
DrawScreen
Forever
P.S.toi on vaan se mavittava osa koodia
Tatti - objektia ei ladata alussa ja yrität silti käyttää sitä.
"Fallout 3 (#10) marked a shift in the industry, a move that saw the western RPG begin to surpass its Japanese counterparts." -IGN top 100 RPGs of all time
Sepi
Member
Posts: 84
Joined: Thu Jun 05, 2008 1:38 pm

Re: Tyhmät kysymykset

Post by Sepi »

Voisiko joku heittää esimerkin, jolla voisi tehdä hylsyn lentämään aseesta partikkelilla ammuttaessa?
tuhoojabotti
Advanced Member
Posts: 485
Joined: Tue Aug 28, 2007 3:53 pm
Location: Suomi, Finland
Contact:

Re: Tyhmät kysymykset

Post by tuhoojabotti »

jos osaat kerran tehä ammuksia niin ei siinä pitäisi mitään ihmeellistä olla, teet vain niille hauleille oman typen ja päivität ne. Luot aina yhden kun henkilö ampuu.
Imagedev.tuhoojabotti.com — “Programmer (noun): An organism that turns caffeine into code.”
Sepi
Member
Posts: 84
Joined: Thu Jun 05, 2008 1:38 pm

Re: Tyhmät kysymykset

Post by Sepi »

noo juu, mutta onko se kannattavinta tehtä partikkeleilla vai typeillä vai voiko partikkeleita käyttää typeillä? Ja en oikein tajua noita partikkeleita. Tuossa manuaalin esimerkissäkin niitä tulee kokoajan, vaikka sitä ei olla määritelty repeatin sisällä millään lailla.
regalis
Advanced Member
Posts: 268
Joined: Mon Aug 27, 2007 9:44 pm

Re: Tyhmät kysymykset

Post by regalis »

Sepi wrote:Ja en oikein tajua noita partikkeleita. Tuossa manuaalin esimerkissäkin niitä tulee kokoajan, vaikka sitä ei olla määritelty repeatin sisällä millään lailla.
Miten niin ei ole määritelty? Vilkaisepa rivejä 61-66.
Sepi
Member
Posts: 84
Joined: Thu Jun 05, 2008 1:38 pm

Re: Tyhmät kysymykset

Post by Sepi »

No siis puhuin tuosta manuaalin esimerkistä, en oppitunnista mutta jokatapauksessa pitää katsoa huomenna uusiksi, tänään nimittäin oksennustaudissa :roll:
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 »

missä vika? taaskaan ei löydy.

Code: Select all

SCREEN 900,900
Type AMMUS 
    Field obj
End Type 

FrameLimit 40

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\GraphicsGale FreeEdition\mans vs. bots\missile.bmp",72)
ShowObject pati,OFF

AddText "tapa robotti!"

If ObjectsOverlap(pati,botti)Then
     botti_life - 10
     If botti_life<0 Then
     DeleteObject botti

Repeat

    ukko_life=100
    botti_life=100    

     Text 10,10,"ukon energia - "+ukko_life
     Text 700,10,"robotin energia - "+botti_life 
      Box 10,25,p1_life,10,OFF
    
    If LeftKey() Then TurnObject ukko,5
    If RightKey() Then TurnObject ukko,-5
    If UpKey() Then MoveObject ukko,2
    If DownKey() Then MoveObject ukko,-2    

    If KeyDown(cbKeyRControl) And reload=0 Then    
        luoti.AMMUS = New(AMMUS)
        luoti\obj=CloneObject(pati)
        CloneObjectPosition luoti\obj,ukko                
        CloneObjectOrientation luoti\obj,ukko            
        reload=50        
    EndIf
    If reload>0 Then reload=reload-1

    For luoti.AMMUS = Each AMMUS
        MoveObject luoti\obj,6
                       
   
           
           If KeyDown(cbkeyescape)
        EndIf        
    Next luoti

    
    
    DrawGame

    
    
    DrawScreen

Until EscapeKey()
kiitti, jos vaivaudutte auttamaan :D
"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.
Wolfman
Newcomer
Posts: 37
Joined: Sat Apr 12, 2008 9:43 pm

Re: Tyhmät kysymykset

Post by Wolfman »

Code: Select all

If ObjectsOverlap(pati,botti)Then
     botti_life - 10
     If botti_life<0 Then
     DeleteObject botti
Tuon pitäisi olla Repeat-forever-loopissa.
Ja se pitäisi olla:

Code: Select all

for luoti.AMMUS = Each AMMUS
If ObjectsOverlap(luoti\obj,botti)Then
     botti_life - 10
deleteobject luoti\obj
delete luoti
endif

     If botti_life<0 Then
     DeleteObject botti
endif
Ja huomio: sinun täytyy laittaa koodiisi ettei bottia enään käytetä kun se on tuhottu! Tämä aiheuttaa MAVin! Tee vaikka muuttuja botti_on. Kun botti on elossa, se on 1 ja kun kuollut 0. Kuten esimerkiksi näin:

Code: Select all

if botti_on=1 then
  If botti_life<0 Then
     DeleteObject botti
botti_on=0
endif
endif
Image
Ozcar
Advanced Member
Posts: 439
Joined: Mon Aug 27, 2007 8:43 pm
Location: Helsinki

Re: Tyhmät kysymykset

Post by Ozcar »

Mutta jos teet botitkin typeillä, voi evotella sydämensä kyllyydestä kun vain muistaa poistaa tyypit niiden kuoltua. Opetteles soveltamaan tyyppejä koko peliin, tulee paljon helpommin hallittava kokonaisuus.

Nyrkkisääntö: jos jotain on pelissäsi yli 2, tee ne tyypeillä tai taulukoilla. Helpottaa kaikkia.
Ratkaisit juuri universaaliongelman! Hienoa, ota keksi.

Filosofia on ajattelun taidetta, mutta sen maalari elää juoden apurahojaan masennukseensa.
Aaponator

Re: Tyhmät kysymykset

Post by Aaponator »

Kuinka saan helpoiten objektin grafiikaksi kirjaimen?
Wolfman
Newcomer
Posts: 37
Joined: Sat Apr 12, 2008 9:43 pm

Re: Tyhmät kysymykset

Post by Wolfman »

Paras tapa on makeimagella, johon sitten piirretään kirjain. Sen jälkeen tehdään objekti, ja objekti maalataan kuvalla.

Code: Select all

kirjainkuva1=MakeImage(10,10) //Tehdään kuva jonka nimi on kirjainkuva1
    DrawToImage kirjainkuva1 //Piirretään kuvaan kirjainkuva1
        Text 0,0,"A" //Piirretään kirjain
    DrawToScreen //Tällä lopetetaan drawtoimage, eli käsketään piirtokomennot näytölle

kirjainobj1=MakeObject() //Tehdään uusi objekti kirjainobj1
PaintObject kirjainobj1,-kirjainkuva1 //Maalataan kirjainobj1 kuvalla kirjainkuva1
Image
KankiKalle
Active Member
Posts: 170
Joined: Mon Jun 23, 2008 9:04 pm

Re: Tyhmät kysymykset

Post by KankiKalle »

Mulla on ollut jo vaikka kuinka kauan ongelmana tällänen. Eli kuinka saan tehtyä sellasen toiminnon, joka näppäintä painettaessa arpoo jonkin luvun väliltä 1-10. Jos on suurempi kuin 5 niin osuttiin viholliseen ja jatketaan seuraavaan Caseen. Jos taas on 5 tai pienempi niin mennään taas eri Caseen. Teen tekstipeliä jossa tarvittasiin tuota toimintoa arpomaan osuuko pelaaja oravaan. Olen vaan saanut aikaiseksi sellaisen että tulos esitetään ruudulle ja sitten pitää itse valita osuiko vai eikö.(eli pystyy huijaamaan)
Väsyttää niin ettei jaksa edes mennä lepäämään.
Jonhu
Active Member
Posts: 186
Joined: Mon Aug 04, 2008 5:45 pm

Re: Tyhmät kysymykset

Post by Jonhu »

Rand komento arpoo kokonaisluvun väliltä rand(luku1,luku2)
jos haluat ottaa desimaalit mukaan käytä komentoa rnd(luku1,luku2)

Tutustu if lauseisiin..

Pieni päätön esimerkki..

Code: Select all

Repeat
    luku=Rand(1,10)
    If luku>5 Then 
        //do something-.-
    Else
        addtext "Loppui, huono tuuri"
        DrawScreen
        WaitKey
        End
    EndIf

    AddText "Next case"
    DrawScreen
    WaitKey
Until EscapeKey()
Innostuin vähäsen ja tein nopeasti tälläisen 5min toisen töherryksen xD Tosin coolbasicillä nämä laskut eivät ole mitään nopeita.. Oma kone viidellä miljoonalla yrityksellä arvasi 30 kertaa peräkkäin suuremman luvun kuin 5.

Code: Select all

Repeat
    For a=0 To 10000 ' nopeuttaa, kun ei tarvi kokoajan piirtää näytölle
        kierroksia=0
        Repeat
            kierroksia+1
            luku=Rand(1,10)
            If luku<=5 Then Exit
        Until EscapeKey()
        yrityksia+1
        Maximi=Max(kierroksia,maximi) ' ottaa suurimman luvun aikaisemmasta maximista ja kierroksista
    Next a
    
    Text 10,40,"Maksimi arvauksia peräkkäin: "+maximi
    Text 10,60,"Yrityksiä mennyt: "+ yrityksia
    Text 300,40,"FPS: "+FPS()
    
    DrawScreen
    
Until EscapeKey()
EDIT: Taidan ohjelmoida saman C++:lla ja testaan nopeuseron xD, mutta onhan tuo vähän tuuripeliä. Nytten uusiksi sain 30 peräkkäistä vasta 100 miljoonan yrityksen jälkeen..

Tässä vielä C++:salla toteutettu versio.. Menee vähän offtopicicsi, mutta hauska vertailla CB ja c++ nopeutta :) Laskee noin 10x nopeammin.

Code: Select all

#include <iostream>
using namespace std;

long long int kierrokset;  // määritellään muutujat
int kertoja,kierroksetmax;

int main(void)
{   
    srand(time(0));      // putsaa vanhan arvotun sanan
    while (true)
    {
         for (int i=0; i<10000000; i++) // jos luvut menee liian nopeasti/hitaasti muuta ruudun päivitysväliä
         {
             kierrokset=0;
             while (true)
             {
                kierrokset++;
                 if (rand() % 101 < 50)  break;    // testaile eri suhteilla.. Muista, että rand aloittaa nollasta
             }
             kertoja++;
             if (kierrokset>kierroksetmax) kierroksetmax=kierrokset;
         } 
         
         cout << "Kertoja arvattu perakkain ennatys: " << kierroksetmax << endl;
         cout << "Yrityksia mennyt:  " << kertoja << endl<< endl;
    }
}
    
Last edited by Jonhu on Mon Nov 24, 2008 5:24 pm, edited 3 times in total.
Ozcar
Advanced Member
Posts: 439
Joined: Mon Aug 27, 2007 8:43 pm
Location: Helsinki

Re: Tyhmät kysymykset

Post by Ozcar »

Niin, no, mahdollisuudet tuolle 30 putkelle ovat 1/2^30, eli 0,000000000931...%. Hyvä sekin
Ratkaisit juuri universaaliongelman! Hienoa, ota keksi.

Filosofia on ajattelun taidetta, mutta sen maalari elää juoden apurahojaan masennukseensa.
KankiKalle
Active Member
Posts: 170
Joined: Mon Jun 23, 2008 9:04 pm

Re: Tyhmät kysymykset

Post by KankiKalle »

Kiitos Jonhulle "päättömästä" esimerkistä, muuntelin sitä vain hieman ja koodini toimii nyt kunnolla, ja lisäksi sain uutta puhtia projektiini tuon avulla :P
Väsyttää niin ettei jaksa edes mennä lepäämään.
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: Tyhmät kysymykset

Post by phons »

Jonhu wrote:
Tässä vielä C++:salla toteutettu versio.. Menee vähän offtopicicsi, mutta hauska vertailla CB ja c++ nopeutta :) Laskee noin 10x nopeammin.

Code: Select all

koodia
Minusta CB:n ja C++:n nopeuksia ei kannata verrata toisiinsa, koska lopputulos on aina sama teki mitä tahansa(tämä on vain minun mielipiteeni). :geek:
Image
Ris
Active Member
Posts: 142
Joined: Wed Jul 02, 2008 8:27 pm

Re: Tyhmät kysymykset

Post by Ris »

phons wrote:Minusta CB:n ja C++:n nopeuksia ei kannata verrata toisiinsa, koska lopputulos on aina sama teki mitä tahansa(tämä on vain minun mielipiteeni). :geek:
Näin tuo on minunkin mielestäni, koska CoolBasic on tulkattava, ja C++ käännettävä.

Toki onhan sitä nopeitakin tulkattavia kieliä olemassa. Esim Java, Ruby ja Python. Varmasti on muitakin tulkattavia kieliä, enemmän tai vähemmän nopeita, kuin noi mainitsemani kielet.

Javahan tosin käännetään tavukoodiksi, ja sitä tavukoodia tulkataan sille tehtyllä "virtuaalikoneella".
Yleensäkkin noissa tulkattavissa kielissä, koodi kannattaa kääntää tavukoodiksi, jotta source tiedostoa ei tarvi
pitää auki koko aikaa + lisäksi siinä on jonkinlainen nopeus-etu.

Tarkemmin en ole tuohon perehtynyt, mutta tuon tiedon verran olen lukenut materiaalia netistä.
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 4:53 pm

Re: Tyhmät kysymykset

Post by Jani »

Miten saisin laatikolle taustavärin (Siten että teksti näkyy siinä päällä)?
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
Locked