Tyhmät kysymykset (I/2011)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Tyhmät kysymykset (I/2011)

Post by Jonez » Wed Apr 27, 2011 11:33 am

Käsittääkseni tässä puhuttiin suorakulmaisista spriteistä, ei tileistä. Jos näin on, toimii homma juuri kuten Dimplen esimerkissä. Joudut vain piirtämään hahmon hieman ylemmäs.

Eli jos Dimplen esimerkissä hahmo olisi piirretty kohtaan x; y, ja tilekoko olisi 16x16, joudut sinä piirtämään hahmon (koko 16x24) kohtaan x, y + (-12). Laskin sen näin: siirto_y = origo_y - ( sprite_korkeus - tile_korkeus ) / 2 - tile_korkeus / 2. Tämä on siis ruutukoordinaateilla.
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War

User avatar
Timblex
Advanced Member
Posts: 252
Joined: Sun Apr 11, 2010 10:37 am
Location: Kouvola

Re: Tyhmät kysymykset (I/2011)

Post by Timblex » Wed Apr 27, 2011 11:40 am

Miten voisi tehdä niin että typen kaikki objektit olisivat törmäyksentunnistuksessa keskenään
niin että viholliset eivät mene toistensa päälle :?:
Entinen timpe99...
Demokisa 2013 demo valmis, Check it out!

Dimple
Active Member
Posts: 103
Joined: Wed Nov 17, 2010 6:43 pm

Re: Tyhmät kysymykset (I/2011)

Post by Dimple » Wed Apr 27, 2011 12:06 pm

Jep, olisi ehkä pitänyt mainita edellisessä viestissä, että spriten ei tarvitse olla neliö: vain tilen koolla on merkitystä. Kiitos Jonezille selvennyksestä.
timpe99 wrote:Miten voisi tehdä niin että typen kaikki objektit olisivat törmäyksentunnistuksessa keskenään
niin että viholliset eivät mene toistensa päälle :?:
Törmäyksentunnistuksen ei pitäisi olla hirveän hankala. Tosin en kyllä tiedä, miten se tehdään objekteilla, koska teen sen itse aina käsin.

Periaatteessa tarvitset vain kaksi sisäkkäistä silmukkaa ja tarkistat ovatko sen hetkisessä tarkastelussa olevat objektit päällekäin (jos objektit eivät ole samat). Se, miten se törmäys kannattaa tarkistaa, riippuu täysin siitä, minkälaisia ne törmäävät objektit ovat (suorakulmioita, pyöreitä, minkä muotoisia sattuu). Törmäykseen reagoiminenkin riippuu muusta koodista.

Btw. objektit eivät ole samat jos niillä on eri ID (pitää tietenkin itse toteuttaa). Toinen vaihtoehto on käyttää koordinaatteja. Jos vihollisten ei pitäisi päästä toistensa päälle, on aika epätodennäköistä, että kahden vihun koordinaatit olisivat täsmälleen samat.

User avatar
KillBurn
Advanced Member
Posts: 339
Joined: Wed Aug 29, 2007 5:02 pm

Re: Tyhmät kysymykset (I/2011)

Post by KillBurn » Wed Apr 27, 2011 12:28 pm

timpe99 wrote:Miten voisi tehdä niin että typen kaikki objektit olisivat törmäyksentunnistuksessa keskenään
niin että viholliset eivät mene toistensa päälle :?:
Tässä on esimerkki

Code: Select all

SCREEN 800,600

Type BOTS
    Field speed 
    Field hp
    Field obj
EndType 

guy=LoadObject("media\guy.bmp",32)
ShowObject guy,OFF 

Repeat

luo+1
If luo>2
    luo=0
    newbot.BotS= New(BotS)
    newBot\obj=CloneObject(guy)
    PositionObject newBot\obj,Rand(-100,100),Rand(-100,100)
    RotateObject newbot\obj,Rand(0,360)
    newbot\hp=Rand(300,500)
    newbot\speed=Rand(3,5)
    
    For e.bots = Each bots
        If e<>newbot Then
           SetupCollision e\obj,newbot\obj,1,1,2
           SetupCollision newbot\obj,e\obj,1,1,2
        EndIf
    Next e
EndIf 

For iBot.BotS= Each BotS

ibot\hp-1
MoveObject ibot\obj,ibot\speed

If ibot\hp<1 Then 
    DeleteObject ibot\obj
    Delete ibot
EndIf 
Next ibot

DrawScreen 
Forever 
Sumu Games: Sam, Ur eye!

User avatar
Timblex
Advanced Member
Posts: 252
Joined: Sun Apr 11, 2010 10:37 am
Location: Kouvola

Re: Tyhmät kysymykset (I/2011)

Post by Timblex » Wed Apr 27, 2011 12:33 pm

Kiitos paljon :)
Entinen timpe99...
Demokisa 2013 demo valmis, Check it out!

espi10
Newcomer
Posts: 4
Joined: Thu Apr 28, 2011 7:05 pm

Re: Tyhmät kysymykset (I/2011)

Post by espi10 » Thu Apr 28, 2011 7:23 pm

Vasta aloitin käyttää coolbasic ja tuli pieni ongelma vastaan. Yritin ihan harjoitukseksi tehdä sellaista teleporttia, että aseella voi ampua kaksi eri teleporttia ja, kun ukon ja teleportin välillä havaitaan törmäys, ukko siirtyisi toisen teleportin luo. (vrt. portal :P) En kuitenkaan saa tuota millään toimimaan

Code: Select all

FrameLimit 60 



ukko = LoadObject ("media\soldier.bmp",72)
hiiri = LoadObject ("media\crosshair.bmp",72)
pati=LoadObject("Media\bullet.bmp")
ShowObject pati, OFF  
teleportti=LoadObject("media\cow.bmp",72)  
ShowObject(teleportti), OFF 
teleportti2=LoadObject("media\fireball.bmp",72)
ShowObject(teleportti2), OFF  
 
reload=2

Repeat

 ShowMouse OFF
  PositionObject hiiri, MouseWX(), MouseWY()
  PointObject ukko, hiiri     
   
 
  If UpKey() Then MoveObject ukko,1.75
  If DownKey() Then MoveObject ukko,-1.75
  If RightKey() Then MoveObject ukko,0,1.5
  If LeftKey() Then MoveObject ukko,0,-1.5
  

  If MouseHit(1) And reload=2  Then 
    tele1=CloneObject(teleportti)
    CloneObjectPosition tele1, ukko
    CloneObjectOrientation tele1, ukko
    MoveObject tele1, 100
    SetupCollision tele1, ukko,2,2,2 
    SetupCollision ukko, tele1,2,2,2 
    reload=1
  EndIf
    
     
  If MouseHit(2) And reload=1 Then 
    tele2=CloneObject(teleportti2)
    CloneObjectPosition tele2, ukko
    CloneObjectOrientation tele2, ukko
    MoveObject tele2, 100
    SetupCollision tele2, ukko,2,2,2 
    SetupCollision ukko, tele2,2,2,2 
    reload=0
  EndIf
  
  If reload=0 And MouseHit(1) Then
    DeleteObject tele1
    tele1=CloneObject(teleportti)
    CloneObjectPosition tele1, ukko
    CloneObjectOrientation tele1, ukko
    MoveObject tele1, 100
    SetupCollision tele1, ukko,2,2,2 
    SetupCollision ukko, tele1,2,2,2 
  EndIf  
   
  If reload=0 And MouseHit(2) Then
    DeleteObject tele2
    tele2=CloneObject(teleportti2)
    CloneObjectPosition tele2, ukko
    CloneObjectOrientation tele2, ukko
    MoveObject tele2, 100
    SetupCollision tele2, ukko,2,2,2 
    SetupCollision ukko, tele2,2,2,2 
  EndIf 

 For i=1 To CountCollisions(tele1)   
    If GetCollision(tele1,i) Then
      PositionObject ukko, ObjectX(tele2),ObjectY(tele2)
    EndIf
 Next i
  
 For p=1 To CountCollisions(tele2)   
    If GetCollision(tele2,p) Then
      PositionObject ukko, ObjectX(tele1),ObjectY(tele1)
    EndIf
 Next p
  
   
   DrawScreen 

Forever


Yritin tehdä noilla törmäyksillä ja myös objectoverlapilla mutta molemmilla tuli "memory access violation". Osaisiko joku sanoa mikä tuossa on pielessä? Tiedän että ton varmaan pystyis tekee paljon lyhyemminkin :roll:

User avatar
legend
Advanced Member
Posts: 371
Joined: Wed Nov 18, 2009 9:06 pm

Re: Tyhmät kysymykset (I/2011)

Post by legend » Thu Apr 28, 2011 7:53 pm

espi10 wrote:Vasta aloitin käyttää coolbasic ja tuli pieni ongelma vastaan. Yritin ihan harjoitukseksi tehdä sellaista teleporttia, että aseella voi ampua kaksi eri teleporttia ja, kun ukon ja teleportin välillä havaitaan törmäys, ukko siirtyisi toisen teleportin luo. (vrt. portal :P) En kuitenkaan saa tuota millään toimimaan

Code: Select all

FrameLimit 60 



ukko = LoadObject ("media\soldier.bmp",72)
hiiri = LoadObject ("media\crosshair.bmp",72)
pati=LoadObject("Media\bullet.bmp")
ShowObject pati, OFF  
teleportti=LoadObject("media\cow.bmp",72)  
ShowObject(teleportti), OFF 
teleportti2=LoadObject("media\fireball.bmp",72)
ShowObject(teleportti2), OFF  
 
reload=2

Repeat

 ShowMouse OFF
  PositionObject hiiri, MouseWX(), MouseWY()
  PointObject ukko, hiiri     
   
 
  If UpKey() Then MoveObject ukko,1.75
  If DownKey() Then MoveObject ukko,-1.75
  If RightKey() Then MoveObject ukko,0,1.5
  If LeftKey() Then MoveObject ukko,0,-1.5
  

  If MouseHit(1) And reload=2  Then 
    tele1=CloneObject(teleportti)
    CloneObjectPosition tele1, ukko
    CloneObjectOrientation tele1, ukko
    MoveObject tele1, 100
    SetupCollision tele1, ukko,2,2,2 
    SetupCollision ukko, tele1,2,2,2 
    reload=1
  EndIf
    
     
  If MouseHit(2) And reload=1 Then 
    tele2=CloneObject(teleportti2)
    CloneObjectPosition tele2, ukko
    CloneObjectOrientation tele2, ukko
    MoveObject tele2, 100
    SetupCollision tele2, ukko,2,2,2 
    SetupCollision ukko, tele2,2,2,2 
    reload=0
  EndIf
  
  If reload=0 And MouseHit(1) Then
    DeleteObject tele1
    tele1=CloneObject(teleportti)
    CloneObjectPosition tele1, ukko
    CloneObjectOrientation tele1, ukko
    MoveObject tele1, 100
    SetupCollision tele1, ukko,2,2,2 
    SetupCollision ukko, tele1,2,2,2 
  EndIf  
   
  If reload=0 And MouseHit(2) Then
    DeleteObject tele2
    tele2=CloneObject(teleportti2)
    CloneObjectPosition tele2, ukko
    CloneObjectOrientation tele2, ukko
    MoveObject tele2, 100
    SetupCollision tele2, ukko,2,2,2 
    SetupCollision ukko, tele2,2,2,2 
  EndIf 

 For i=1 To CountCollisions(tele1)   
    If GetCollision(tele1,i) Then
      PositionObject ukko, ObjectX(tele2),ObjectY(tele2)
    EndIf
 Next i
  
 For p=1 To CountCollisions(tele2)   
    If GetCollision(tele2,p) Then
      PositionObject ukko, ObjectX(tele1),ObjectY(tele1)
    EndIf
 Next p
  
   
   DrawScreen 

Forever


Yritin tehdä noilla törmäyksillä ja myös objectoverlapilla mutta molemmilla tuli "memory access violation". Osaisiko joku sanoa mikä tuossa on pielessä? Tiedän että ton varmaan pystyis tekee paljon lyhyemminkin :roll:
Dääämmm... Joku ei ehtiny ensin... mut sillä oli parempi vastaus =DDD
Last edited by legend on Thu Apr 28, 2011 7:55 pm, edited 1 time in total.

User avatar
Latexi95
Guru
Posts: 1163
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: Tyhmät kysymykset (I/2011)

Post by Latexi95 » Thu Apr 28, 2011 7:53 pm

espi10 wrote:Vasta aloitin käyttää coolbasic ja tuli pieni ongelma vastaan. Yritin ihan harjoitukseksi tehdä sellaista teleporttia, että aseella voi ampua kaksi eri teleporttia ja, kun ukon ja teleportin välillä havaitaan törmäys, ukko siirtyisi toisen teleportin luo. (vrt. portal :P) En kuitenkaan saa tuota millään toimimaan

Code: Select all

FrameLimit 60 



ukko = LoadObject ("media\soldier.bmp",72)
hiiri = LoadObject ("media\crosshair.bmp",72)
pati=LoadObject("Media\bullet.bmp")
ShowObject pati, OFF  
teleportti=LoadObject("media\cow.bmp",72)  
ShowObject(teleportti), OFF 
teleportti2=LoadObject("media\fireball.bmp",72)
ShowObject(teleportti2), OFF  
 
reload=2

Repeat

 ShowMouse OFF
  PositionObject hiiri, MouseWX(), MouseWY()
  PointObject ukko, hiiri     
   
 
  If UpKey() Then MoveObject ukko,1.75
  If DownKey() Then MoveObject ukko,-1.75
  If RightKey() Then MoveObject ukko,0,1.5
  If LeftKey() Then MoveObject ukko,0,-1.5
  

  If MouseHit(1) And reload=2  Then 
    tele1=CloneObject(teleportti)
    CloneObjectPosition tele1, ukko
    CloneObjectOrientation tele1, ukko
    MoveObject tele1, 100
    SetupCollision tele1, ukko,2,2,2 
    SetupCollision ukko, tele1,2,2,2 
    reload=1
  EndIf
    
     
  If MouseHit(2) And reload=1 Then 
    tele2=CloneObject(teleportti2)
    CloneObjectPosition tele2, ukko
    CloneObjectOrientation tele2, ukko
    MoveObject tele2, 100
    SetupCollision tele2, ukko,2,2,2 
    SetupCollision ukko, tele2,2,2,2 
    reload=0
  EndIf
  
  If reload=0 And MouseHit(1) Then
    DeleteObject tele1
    tele1=CloneObject(teleportti)
    CloneObjectPosition tele1, ukko
    CloneObjectOrientation tele1, ukko
    MoveObject tele1, 100
    SetupCollision tele1, ukko,2,2,2 
    SetupCollision ukko, tele1,2,2,2 
  EndIf  
   
  If reload=0 And MouseHit(2) Then
    DeleteObject tele2
    tele2=CloneObject(teleportti2)
    CloneObjectPosition tele2, ukko
    CloneObjectOrientation tele2, ukko
    MoveObject tele2, 100
    SetupCollision tele2, ukko,2,2,2 
    SetupCollision ukko, tele2,2,2,2 
  EndIf 

 For i=1 To CountCollisions(tele1)   
    If GetCollision(tele1,i) Then
      PositionObject ukko, ObjectX(tele2),ObjectY(tele2)
    EndIf
 Next i
  
 For p=1 To CountCollisions(tele2)   
    If GetCollision(tele2,p) Then
      PositionObject ukko, ObjectX(tele1),ObjectY(tele1)
    EndIf
 Next p
  
   
   DrawScreen 

Forever


Yritin tehdä noilla törmäyksillä ja myös objectoverlapilla mutta molemmilla tuli "memory access violation". Osaisiko joku sanoa mikä tuossa on pielessä? Tiedän että ton varmaan pystyis tekee paljon lyhyemminkin :roll:
Korjasin koodisi tai ehkä pikemminkin kirjoitin sen uudestaan. En jaksanut selvitellä miten koodisi toimii, joten tein teleportti systeemin kokonaan uusiksi. Miksi muuten koodissasi on teleporttiklooneja? Voisit käyttää suoraan varsinaisia objekteja.
Ihanaa kun ei tarvinnut muistuttaa ensikertalaiselle sisennyksestä. :D

Code: Select all

FrameLimit 60



ukko = LoadObject ("media\soldier.bmp",72)
hiiri = LoadObject ("media\crosshair.bmp",72)
pati=LoadObject("Media\bullet.bmp")
ShowObject pati, OFF 
teleportti1=LoadObject("media\cow.bmp",72)
ShowObject(teleportti1), OFF
teleportti1koko = 30 //Teleportin koon säde

teleportti2=LoadObject("media\fireball.bmp",72)
ShowObject(teleportti2), OFF
teleportti2koko = 30 //Teleportin koon säde

reload=2

odota As Byte = 0
Repeat

    ShowMouse OFF
    PositionObject hiiri, MouseWX(), MouseWY()
    PointObject ukko, hiiri     
   

    If UpKey() Then MoveObject ukko,1.75
    If DownKey() Then MoveObject ukko,-1.75
    If RightKey() Then MoveObject ukko,0,1.5
    If LeftKey() Then MoveObject ukko,0,-1.5
    
    If MouseHit(1) Then
        ShowObject teleportti1,ON
        ScreenPositionObject teleportti1,MouseX(),MouseY()
        odota = 1
    ElseIf MouseHit(2)
        ShowObject teleportti2,ON
        ScreenPositionObject teleportti2,MouseX(),MouseY()
        odota = 1
    EndIf
    
    If odota = 0 Then
        If Distance2(teleportti1,ukko) < teleportti1koko Then
            CloneObjectPosition ukko,teleportti2
            odota = 1
        ElseIf Distance2(teleportti2,ukko) < teleportti2koko
            CloneObjectPosition ukko,teleportti1
            odota = 1
        EndIf
    Else
        If Distance2(teleportti1,ukko) > teleportti1koko And Distance2(teleportti2,ukko) > teleportti2koko Then odota = 0
    EndIf
    DrawScreen

Forever
Tarkistan törmäyksen Distance2:lla, mutta ObjectsOverLap kävisi myös aivan hyvin. Törmäystarkistusta en tähän tarkakoitukseen suosittele, sillä se on aika paljon hitaampi. Koodissani, kun hiirellä luodaan/siirretään teleporttia se laitetaan näkyviin ja siirretään hiiren kohdalle. Tuo "odota" muuttuja merkkaa sitä, että teleporttia on juuri käytetty ja pitää mennä kerran teleportin ulkopuolelle, että teleporttia voisi käyttää uudelleen. Muutenhan ukko kokoajan pomppisi teleporttien välissä.
Jos odota on 0 ja ukkojonkun teleportin päällä se siirretään toiselle teleportille. Toivottavasti ymmärsit selitykseni ja tervetuloa foorumeille. :P
EDIT:

legend, huomasitko, että tele1 ja tele2 ovat klooneja teleporttista ja teleportti2:sta? Mutta joo MAV tulee, kun koitat tarkistaa törmäyksiä tele1:lle ja tele2:lle, vaikka niitä ei ole vielä edes luotu(hiirtä ei ole painettu).


espi10
Newcomer
Posts: 4
Joined: Thu Apr 28, 2011 7:05 pm

Re: Tyhmät kysymykset (I/2011)

Post by espi10 » Thu Apr 28, 2011 8:06 pm

Kiitos! :) Paljon toimivampi ja lyhyempi ratkaisu. En tullu yhtään ajatelleks sitä että toi tyyppihän jäis pomppimaan niitten teleporttien välille :roll:
Tohon MAViin vielä että voisiko sen korjata vaikka sillä että tekis jonkun Goto rakenteen. Eli vasta sen jälkeen kun telet luotu niin hyppäisi tuohon törmäysten tarkistukseen?

Dimple
Active Member
Posts: 103
Joined: Wed Nov 17, 2010 6:43 pm

Re: Tyhmät kysymykset (I/2011)

Post by Dimple » Thu Apr 28, 2011 9:01 pm

Goto rakenne olisi mahdollinen (ja niin se itse asiassa joka tapauksessa käytännössä tekee, kun se käännetään konekielelle) mutta if-rakenne olisi paljon nätimpi. Eli esim. jotenkin näin:

Code: Select all

tele1_aktivoitu = false

Repeat

....

  If reload=0 And MouseHit(1) Then
    tele1_aktivoitu = true

    DeleteObject tele1                    'Tämä on kyllä aika sotku, mutta en nyt puutu siihen
    tele1=CloneObject(teleportti)
    CloneObjectPosition tele1, ukko
    CloneObjectOrientation tele1, ukko
    MoveObject tele1, 100
    SetupCollision tele1, ukko,2,2,2 
    SetupCollision ukko, tele1,2,2,2 
  EndIf  

...

If tele1_aktivoitu  =  true Then
    For i=1 To CountCollisions(tele1)   
        If GetCollision(tele1,i) Then
          PositionObject ukko, ObjectX(tele2),ObjectY(tele2)
         EndIf
     Next i
EndIf

...,


espi10
Newcomer
Posts: 4
Joined: Thu Apr 28, 2011 7:05 pm

Re: Tyhmät kysymykset (I/2011)

Post by espi10 » Fri Apr 29, 2011 2:24 am

Niinno tarkoitus vain oli saada hieman harjotusta tosta koodauksesta niin halusin vaan tietää että miten tuon voi tehdä tolla mun alottamalla tavalla. En tota missään kumminkaan enää käytä. Kiitos kun kerroit miten tuo onnistuu :)

User avatar
Laurenzo
Member
Posts: 85
Joined: Mon Apr 25, 2011 8:28 am
Location: Tampere
Contact:

Re: Tyhmät kysymykset (I/2011)

Post by Laurenzo » Fri Apr 29, 2011 7:26 am

Mistä pystyy coolbasic classic version lataamaan ?
(tai v3) :?:
Aloittelija koodari joka
osaa jo jotain (ehkä) :)
KOTISIVU

User avatar
buke44
Active Member
Posts: 169
Joined: Sat May 23, 2009 8:10 pm
Location: Tampere

Re: Tyhmät kysymykset (I/2011)

Post by buke44 » Fri Apr 29, 2011 7:40 am

Laurenzo wrote:Mistä pystyy coolbasic classic version lataamaan ?
(tai v3) :?:
Ei mistään. Kumpikaan niistä ei ole vielä valmis.

espi10
Newcomer
Posts: 4
Joined: Thu Apr 28, 2011 7:05 pm

Re: Tyhmät kysymykset (I/2011)

Post by espi10 » Fri Apr 29, 2011 11:29 am

Yritin tehä noita harjotustehtäviä tosta coolbasicista ja pääsin tohon lottoon asti ja sain tämmösen väännön tehtyy:

Code: Select all

Repeat 
  num1=Rand(1,num2-1)
  num2=Rand(num1+1,num3-1) 
  num3=Rand(num2+1,num4-1) 
  num4=Rand(num3+1,num5-1) 
  num5=Rand(num4+1,num6-1) 
  num6=Rand(num5+1,num7-1) 
  num7=Rand(num6+1,49) 
 
   If KeyHit(156) Then
      AddText "oikea rivi:" + num1 + "," + num2 + "," + num3 + "," + num4 + "," + num5 + "," + num6 + "," + num7
   EndIf 

 DrawScreen

Forever  
Aloin vaan miettiä että onko tossa nyt ihan oikea todennäköisyys sittenkään kun noi randomit riippuu toisistaan :?: Ja mikä ois se yksinkertasin tapa?
Onko noihin harjotustehtäviin vastauksia muuten jossain?
EDIT: ja sitten vielä semmonen kysymys et voiko laittaa AND ja OR komentoihin jotenkin sulkeita tyyliin
IF a AND (b OR c) THEN ....

User avatar
MetalRain
Active Member
Posts: 188
Joined: Sun Mar 21, 2010 12:17 pm
Location: Espoo

Re: Tyhmät kysymykset (I/2011)

Post by MetalRain » Fri Apr 29, 2011 11:46 am

espi10 wrote:Aloin vaan miettiä että onko tossa nyt ihan oikea todennäköisyys sittenkään kun noi randomit riippuu toisistaan :?: Ja mikä ois se yksinkertasin tapa?
Tässä eräs tapa. Ajatuksena siis se että mikäli uutta numeroa arvottaessa huomataan että se on jo käytetty arvotaan numero uudelleen.

Code: Select all

//varataan taulukot arvotuille numeroille
//sekä taulukko johon voidaan merkata käytetyt (=arvotut)
//numerot
Dim ValitutNumerot(7)
Dim NumerotKäytetty(49)

//aloitetaan numerosta 1
arvottavaNumero = 1

//jatketaan silmukan suoritusta niin kauan
//kunnes viimeinenkin numero on arvottu
While ValitutNumerot(7)=0

    //arvotaan numero joukosta
    kokeiltavaArvo = Rand(1,49)
    
    //arvotaan uudelleen ja uudelleen 
    //jos kokeiltavaArvo on jo käytetty
    While NumerotKäytetty(kokeiltavaArvo)=1 
    
        kokeiltavaArvo = Rand(1,49)
        
    Wend 
    
    //kun päästään tänne on löydetty sopiva arvo
    //merkataan se käytetyksi
    NumerotKäytetty(kokeiltavaArvo) = 1
    //ja lisätään arvottuiden numeroiden taulukkoon
    ValitutNumerot(arvottavaNumero) = kokeiltavaArvo
    
    //siirrytään seuraavaan numeroon
    arvottavaNumero = arvottavaNumero + 1

Wend 

//tulostetaan numerot
txt$ = "Illan lottonumerot ovat: "

For i=1 To 7
    txt$=txt$+ValitutNumerot(i)+" "
Next i

Print txt$
WaitKey 
On huomattava ettei arvottavat numerot mene lotossa suuruusjärjestyksessä. Toinen arvalla saatava luku ei välttämättä ole toiseksi pienin/suurin ja siksi seuraavaa numeroa ei voida arpoa aina kahden luvun väliltä vaan tulee käyttää koko arvoaluetta 1-49. En ole aivan varma miten tuo vaikuttaa todennäköisyyksiin, mutta voisi kuvitella että arvot jakaantuvat tasaisemmin koko alueelle sinun käyttämällä tavalla.
espi10 wrote:Onko noihin harjotustehtäviin vastauksia muuten jossain?
EDIT: ja sitten vielä semmonen kysymys et voiko laittaa AND ja OR komentoihin jotenkin sulkeita tyyliin
IF a AND (b OR c) THEN ....
Täältä löytyy harjoitustehtäviin vastauksia.

Voit käyttää sulkeita juurikin noin kuin kirjoitit. (:

LeeMeister96
Newcomer
Posts: 2
Joined: Fri Apr 29, 2011 7:24 pm

Re: Tyhmät kysymykset (I/2011)

Post by LeeMeister96 » Fri Apr 29, 2011 7:31 pm

Olen juuri aloittanut CB:n käytön, mutta heti tuli vastaan ongelma. En nimittäin pysty ajamaan ohjelmaa F5:lla. Käytössäni on Windows XP x32.

User avatar
Latexi95
Guru
Posts: 1163
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: Tyhmät kysymykset (I/2011)

Post by Latexi95 » Fri Apr 29, 2011 7:36 pm

LeeMeister96 wrote:Olen juuri aloittanut CB:n käytön, mutta heti tuli vastaan ongelma. En nimittäin pysty ajamaan ohjelmaa F5:lla. Käytössäni on Windows XP x32.
Vähän tarkennusta kiitos. Mitä tapahtuu, kun painat F5:sta? Vai tapahtuuko mitään? Suosittelen myös katsomaan "Usein ihmetellyt ongelmat" -listaa erityisesti 2. kohtaa. Ehkä virustorjunta ohjelma estää CB:tä?

LeeMeister96
Newcomer
Posts: 2
Joined: Fri Apr 29, 2011 7:24 pm

Re: Tyhmät kysymykset (I/2011)

Post by LeeMeister96 » Sat Apr 30, 2011 10:34 am

Latexi95 wrote:
LeeMeister96 wrote:Olen juuri aloittanut CB:n käytön, mutta heti tuli vastaan ongelma. En nimittäin pysty ajamaan ohjelmaa F5:lla. Käytössäni on Windows XP x32.
Vähän tarkennusta kiitos. Mitä tapahtuu, kun painat F5:sta? Vai tapahtuuko mitään? Suosittelen myös katsomaan "Usein ihmetellyt ongelmat" -listaa erityisesti 2. kohtaa. Ehkä virustorjunta ohjelma estää CB:tä?
Mitään ei tapahdu ja linkistäsi ei valitettavasti ollut apua.

User avatar
valscion
Moderator
Moderator
Posts: 1585
Joined: Thu Dec 06, 2007 8:46 pm
Location: Espoo
Contact:

Re: Tyhmät kysymykset (I/2011)

Post by valscion » Sat Apr 30, 2011 3:48 pm

LeeMeister96 wrote:Mitään ei tapahdu ja linkistäsi ei valitettavasti ollut apua.
Mitä virustentorjuntaohjelmaa käytät? Oletko kokeillut asentaa CoolBasicin uudelleen, jos siitä olisi apua?
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

User avatar
Wingman
Devoted Member
Posts: 594
Joined: Tue Sep 30, 2008 4:30 pm
Location: Ruudun toisella puolella

Re: Tyhmät kysymykset (I/2011)

Post by Wingman » Sun May 01, 2011 10:18 am

Itselläni ei win7 anna kaikkien ohjelmien lukea program files -kansiosta, joten asensin cb.n johonkin muualle, ja se auttoi
- - - -

Locked