Page 18 of 23
Re: Tyhmät kysymykset (I/2012)
Posted: Tue Feb 19, 2013 12:01 pm
by Misthema
JjyKs wrote:naput telija wrote:Joku estää coolbasicin verkkoliikenteen. Jos käytössäsi on modeemin kautta reititetty internet, avaa käyttämäsi portti (löytyy internetistä hakusanoilla "port forwarding") . Voit kokeilla myös virustorjuntasi kautta kaiken coolbasic-verkkoliikenteen sallimista ja virustorjunnasta käyttämäsi portin avaamista. Kokeilepa myös käyttää omaa ulkoista ip-osoitettasi tai sisäistä (löytyy komentorivikomennolla ipconfig)
Kysymys saattoi olla hiukan epäselvä, mutta ongelmanahan oli juuri tuo Viltzu:n korjaama muuttujan tyyppi, eihän nyt localhostia varten mitään portteja tarvitse avata.
Viltzu wrote:Et ole määritellyt muuttujaa ip merkkijonoksi, jolloin syötetty ip:stä jää jäljelle vain ensimmäinen luku. (Esim. "192.168.0.1" -> "192") tulee 0.
Kiitos paljon. En vielä päässyt tuota testaamaan, mutta eiköhän se ongelma löytynyt
Mahdollista on myös tehdä master-server, johon muiden päälle laittamat serverit ottavat yhteyttä ja kertovat sille IP-osoitteensa - mikäli cbNetwork:llä on mahdollista saada tätä jostain poimittua... Master-server voisi esimerkiksi antaa palvelimille ID -järjestysnumeron jonka perään heitetään IP. Nämä tallennetaan sitten esimerkiksi tekstitiedostoon, josta master-server osaa sitten hakea ID:n avulla oikean IP-osoitteen asiakasohjelmalle (clientille).
Mutta tosiaan, ei ole mitään hajua, onko cbNetworkillä mahdollista saada poimittua IP-osoitteita. NetMatch:ssä on käytetty PHP-kikkailuja, joten sillä varmaan on osoitteetkin poimittu.
Re: Tyhmät kysymykset (I/2012)
Posted: Tue Feb 19, 2013 5:34 pm
by Jani
Misthema wrote:JjyKs wrote:naput telija wrote:Joku estää coolbasicin verkkoliikenteen. Jos käytössäsi on modeemin kautta reititetty internet, avaa käyttämäsi portti (löytyy internetistä hakusanoilla "port forwarding") . Voit kokeilla myös virustorjuntasi kautta kaiken coolbasic-verkkoliikenteen sallimista ja virustorjunnasta käyttämäsi portin avaamista. Kokeilepa myös käyttää omaa ulkoista ip-osoitettasi tai sisäistä (löytyy komentorivikomennolla ipconfig)
Kysymys saattoi olla hiukan epäselvä, mutta ongelmanahan oli juuri tuo Viltzu:n korjaama muuttujan tyyppi, eihän nyt localhostia varten mitään portteja tarvitse avata.
Viltzu wrote:Et ole määritellyt muuttujaa ip merkkijonoksi, jolloin syötetty ip:stä jää jäljelle vain ensimmäinen luku. (Esim. "192.168.0.1" -> "192") tulee 0.
Kiitos paljon. En vielä päässyt tuota testaamaan, mutta eiköhän se ongelma löytynyt
Mahdollista on myös tehdä master-server, johon muiden päälle laittamat serverit ottavat yhteyttä ja kertovat sille IP-osoitteensa - mikäli cbNetwork:llä on mahdollista saada tätä jostain poimittua... Master-server voisi esimerkiksi antaa palvelimille ID -järjestysnumeron jonka perään heitetään IP. Nämä tallennetaan sitten esimerkiksi tekstitiedostoon, josta master-server osaa sitten hakea ID:n avulla oikean IP-osoitteen asiakasohjelmalle (clientille).
Mutta tosiaan, ei ole mitään hajua, onko cbNetworkillä mahdollista saada poimittua IP-osoitteita. NetMatch:ssä on käytetty PHP-kikkailuja, joten sillä varmaan on osoitteetkin poimittu.
Vastaanottaja (serveri) voi lukea lähettäjän IP:n jostain muuttujasta. Oliko NET_ClientId?
Re: Tyhmät kysymykset (I/2012)
Posted: Thu Feb 21, 2013 12:51 am
by valscion
Jani wrote:Vastaanottaja (serveri) voi lukea lähettäjän IP:n jostain muuttujasta. Oliko NET_ClientId?
Jep, oikeassa olet. NET_ClientId -globaali sisältää aina viimeksi luetun paketin lähettäjän IP:n ja ID:n muodossa "IP:ID". eli siitä-pitää parsia se IP pois ennen kaksoispistettä. Mikäli oikein muistan.
Re: Tyhmät kysymykset (I/2012)
Posted: Fri Feb 22, 2013 6:34 pm
by Konstaduck
Miten saisin Inputiin/Advancedinputtiin merkkijonorajan? Menneillään olevassa projektissa sitä tarvitsisin ja alla oleva kikkailu ei toiminut..
Code: Select all
input1=True
Repeat
SetFont f
If Len(_nimi$) <9 And input1=True
nimi_$ = AdvancedInput(200,ScreenHeight()/2-50,"Nimi: ")
EndIf
If Len(_nimi_$) <9 And input2=True
_nimi_$= Advancedinput(200,ScreenHeight()/2-50,"Nimi: ")
EndIf
If Len(nimi_) >=9
If input1=True
_nimi_ = Left(nimi_,Len(nimi_)-1)
input2=True
input1=False
Goto loppu
EndIf
If input2=True
nimi_ = Left(_nimi_,Len(_nimi_)-1)
input2=False
input1=True
Goto loppu
EndIf
EndIf
loppu:
DrawScreen
Forever
Re: Tyhmät kysymykset (I/2012)
Posted: Sat Feb 23, 2013 11:34 am
by Kumiankka
Konstaduck wrote:Miten saisin Inputiin/Advancedinputtiin merkkijonorajan?
Tämä nyt ei ole suora vastaus mutta tässä olisi nyt ainakin esimerkkinä miten toteutin merkkijonon maksimipituuden Solupelissä
Code: Select all
Global inputBoxActive
Global inputBoxTimer
Global inputBoxBlink
inputBoxActive = False
Repeat
teksti$ = InputBox(teksti, 10, 10, 10, 100, 20)
DrawScreen
Forever
Function InputBox(_var$, _x#, _y#, _maxlen, _width, _height)
// Hiiren ykkösnappi klikattu...
If MouseHit(1) Then
//..laatikon sisäpuolelta
If BoxOverlap(MouseX(), MouseY(), 1, 1, _x, _y, _width, _height) Then
// Nollataan välkyn ajastin
inputBoxTimer = Timer()
// Välkky näkyviin
inputBoxBlink = 1
// Inputti aktiiviseksi
inputBoxActive = True
// Ettei huomioitaisi inputin kiinniollessa painettuja näppäimiä
ClearKeys
//..Laatikon ulkopuolelta
Else
// Suljetaan inputti
inputBoxActive = False
EndIf
EndIf
If inputBoxActive Then
//Otetaan näppäimenpainalukset talteen
_a = GetKey()
// Jätetään joitain näppäimenpainaluksia huomiotta
// Ja jos tekstin pituus ei ylitä maksimirajaa
If _a > 31 And Len(_var) < _maxlen Then
// Lisätään merkkijonoon
_var = _var + Chr(_a)
EndIf
// Päivitetään välkky
If Timer() > inputBoxTimer + 500 Then
inputBoxBlink = -inputBoxBlink
inputBoxTimer = Timer()
EndIf
// Merkkien pyyhkiminen
If KeyHit(cbKeyBackspace) And Len(_var) > 0 Then
_var = Left(_var, Len(_var) - 1)
EndIf
// Piirtely
Color cbSilver
Box _x, _y, _width, _height, True
If inputBoxBlink = 1 Then
Color cbDark
Box _x + 7 + TextWidth(_var), _y + TextHeight(_var)/2, 2, TextHeight(_var), True
EndIf
Color cbWhite
CenterText _x + 5, _y + _height/2, _var, 1
// Jos enter tai esc niin suljetaan inputti
If KeyHit(cbKeyReturn) Or KeyHit(cbKeyEscape) Then
inputBoxActive = False
EndIf
Else
// Piirtelyä
Color cbSilver
Box _x, _y, _width, _height, False
Color cbWhite
CenterText _x + 5, _y + _height/2, _var, 1
EndIf
Return _var
EndFunction
Re: Tyhmät kysymykset (I/2012)
Posted: Sat Feb 23, 2013 6:43 pm
by Konstaduck
Kumiankka wrote:
Tämä nyt ei ole suora vastaus mutta tässä olisi nyt ainakin esimerkkinä miten toteutin merkkijonon maksimipituuden Solupelissä
Code: Select all
Global inputBoxActive
Global inputBoxTimer
Global inputBoxBlink
inputBoxActive = False
Repeat
teksti$ = InputBox(teksti, 10, 10, 10, 100, 20)
DrawScreen
Forever
Function InputBox(_var$, _x#, _y#, _maxlen, _width, _height)
// Hiiren ykkösnappi klikattu...
If MouseHit(1) Then
//..laatikon sisäpuolelta
If BoxOverlap(MouseX(), MouseY(), 1, 1, _x, _y, _width, _height) Then
// Nollataan välkyn ajastin
inputBoxTimer = Timer()
// Välkky näkyviin
inputBoxBlink = 1
// Inputti aktiiviseksi
inputBoxActive = True
// Ettei huomioitaisi inputin kiinniollessa painettuja näppäimiä
ClearKeys
//..Laatikon ulkopuolelta
Else
// Suljetaan inputti
inputBoxActive = False
EndIf
EndIf
If inputBoxActive Then
//Otetaan näppäimenpainalukset talteen
_a = GetKey()
// Jätetään joitain näppäimenpainaluksia huomiotta
// Ja jos tekstin pituus ei ylitä maksimirajaa
If _a > 31 And Len(_var) < _maxlen Then
// Lisätään merkkijonoon
_var = _var + Chr(_a)
EndIf
// Päivitetään välkky
If Timer() > inputBoxTimer + 500 Then
inputBoxBlink = -inputBoxBlink
inputBoxTimer = Timer()
EndIf
// Merkkien pyyhkiminen
If KeyHit(cbKeyBackspace) And Len(_var) > 0 Then
_var = Left(_var, Len(_var) - 1)
EndIf
// Piirtely
Color cbSilver
Box _x, _y, _width, _height, True
If inputBoxBlink = 1 Then
Color cbDark
Box _x + 7 + TextWidth(_var), _y + TextHeight(_var)/2, 2, TextHeight(_var), True
EndIf
Color cbWhite
CenterText _x + 5, _y + _height/2, _var, 1
// Jos enter tai esc niin suljetaan inputti
If KeyHit(cbKeyReturn) Or KeyHit(cbKeyEscape) Then
inputBoxActive = False
EndIf
Else
// Piirtelyä
Color cbSilver
Box _x, _y, _width, _height, False
Color cbWhite
CenterText _x + 5, _y + _height/2, _var, 1
EndIf
Return _var
EndFunction
Sehän toimii! Kiitoksia kumiankka. Lähdenpäs tästä tutustumaan koodiin tarkemmin ja sen jälkeen jatkamaan projektia...
Re: Tyhmät kysymykset (I/2012)
Posted: Mon Apr 01, 2013 3:19 am
by Awaclus
Nyt tulee näin kolmelta aamuyöstä erittäin tyhmä kysymys: Millä tavalla erilaiset loogiset operaattorit stäkkäävät ja voinko vaikuttaa siihen jotenkin?
Toisin sanoen, jos koodini on
niin tarkoittaako tuo sitä, että ehto on tosi jos sekä a että b ovat tosia tai jos c on tosi, vai sitä, että ehto on tosi jos a on tosi ja lisäksi b tai c on tosi, ja miksi se toimii sillä tavalla, ja miten saan sen toimimaan sillä toisella tavalla?
Re: Tyhmät kysymykset (I/2012)
Posted: Mon Apr 01, 2013 3:36 am
by Latexi95
Awaclus wrote:Nyt tulee näin kolmelta aamuyöstä erittäin tyhmä kysymys: Millä tavalla erilaiset loogiset operaattorit stäkkäävät ja voinko vaikuttaa siihen jotenkin?
Toisin sanoen, jos koodini on
niin tarkoittaako tuo sitä, että ehto on tosi jos sekä a että b ovat tosia tai jos c on tosi, vai sitä, että ehto on tosi jos a on tosi ja lisäksi b tai c on tosi, ja miksi se toimii sillä tavalla, ja miten saan sen toimimaan sillä toisella tavalla?
No sulut on aika kova sana jos pitää muuttaa suoritusjärjestystä. Loogiset operaattorit vaikuttaa toimivan ihan vasemmalta oikealle järjestyksessä.
Code: Select all
a | b | c | a And b Or c
________________
0 | 0 | 0 | 0
0 | 0 | 1 | 1
0 | 1 | 0 | 0
0 | 1 | 1 | 1
1 | 0 | 0 | 0
1 | 0 | 1 | 1
1 | 1 | 0 | 1
1 | 1 | 1 | 1
Re: Tyhmät kysymykset (I/2012)
Posted: Mon Apr 01, 2013 1:44 pm
by koodaaja
Näin ehkä CB:llä, mutta ainakin
C++:ssa && menee ||:n edelle, siis and aina ennen oria. Sulkuja kannattaa käyttää lähes poikkeuksetta selventämään.
Re: Tyhmät kysymykset (I/2012)
Posted: Thu Apr 04, 2013 3:39 pm
by naputtelija
Tämä ei liity mitenkään coolbasiciin, mutta voiko joku selittää minulle miten tuo moderni GL-vektorigrafiikka toimii? Tai linkata jonkin helpon tutoriaalin, että voisin jotakin koodailla tuolla offtopic-ketjussa mainitulla glsl sandboxilla?
Re: Tyhmät kysymykset (I/2012)
Posted: Thu Apr 11, 2013 7:57 pm
by Character
mitenköhän laskettaisiin semmonen että arvottaisiin satunnainen luku vaikka yhden ja sadan välillä ja mitä pienempi luku sitä todennäköisempää on että se tulee? ei nyt millään saa päähän että miten näin saisi tehtyä. matikka vähän ruosteessa...
Re: Tyhmät kysymykset (I/2012)
Posted: Thu Apr 11, 2013 9:05 pm
by legend
Character wrote:mitenköhän laskettaisiin semmonen että arvottaisiin satunnainen luku vaikka yhden ja sadan välillä ja mitä pienempi luku sitä todennäköisempää on että se tulee? ei nyt millään saa päähän että miten näin saisi tehtyä. matikka vähän ruosteessa...
luku = Rand(1,Rand(1,100))
Tuota olen itse käyttänyt.
Todennäköisyys taitaa nousta exponentiaalisesti.
Saadakseen 100, todennäköisyys on 1/10000.
Saadakseen 1, todennäköisyys on 1/20.
Voisiko joku kertoa, miten voi laskea kuinka suuri todennäköisyys on esimerkiksi saada luku 50?
Re: Tyhmät kysymykset (I/2012)
Posted: Thu Apr 11, 2013 9:25 pm
by Character
jaa olikin noin yksinkertaista
kumma kun en itse tajunnut.. mutta kiitos avusta
Re: Tyhmät kysymykset (I/2012)
Posted: Fri Apr 12, 2013 3:24 pm
by Jonez
Legend: en voi kertoa (kun ei jaksa /osaa yrittää) miten se lasketaan, mutta vastaus on n. 0.7% tämän koodin perusteella:
Code: Select all
etsiluku = 50
lukumaara# = 0
muita# = 0
For i = 1 To 1000000
luku = Rand(1,Rand(1,100))
If luku = etsiluku Then
lukumaara + 1
Else
muita + 1
EndIf
Next i
Print "todennäköisyys saada luku " + etsiluku + ": " + (lukumaara / muita) * 100 + " %"
Print "done"
WaitKey
Re: Tyhmät kysymykset (I/2012)
Posted: Sat Apr 13, 2013 2:20 am
by koodaaja
Todennäköisyydenhän saa laskemalla, kuinka todennäköinen 50 on milläkin ensimmäisen randin arvolla. Tulos on (1/100)*(0+0+0+...+0+1/50+1/51+...+1/100), eli sata vaihtoehtoa joissa 50:n todennäköisyys vaihtelee. Tästä todennäköisyydeksi tulee 0,708172%, mikä on kovin lähellä jonezin empiiristä koetta.
Itse olen käyttänyt vain rounddown(min+(rnd(1)^a)*(max-min)) -tyylistä kaavaa, jolla kasaantumisen voimakkuutta voi säädellä a:n arvoilla.
Re: Tyhmät kysymykset (I/2012)
Posted: Sun Apr 14, 2013 3:54 pm
by Kyrath
Hei,
toimiiko tuo Tilester enää ollenkaan? Tuntuu, että mikään kartta mitä sillä teen ei toimi. CB lataa kaiken mukisematta, mutta karttaa ei näy, pelkkää mustaa. Kaikki muu toimii koodissa kuten tarkoitettu. Heti kun käytin mukana tulevaa cdm2.tilliä ja tileset.bmptä ni kartta ilmestyi. Pitääkö tilesetti tallentaa jossain tietyssä bittimuodossa vai mitä taikuutta tää vaatii? Olen yrittänyt sijoittaa omatekemät tillit valmiisiin tutorialkoodeihin, mutta aina tulee pelkkää mustaa.
Sitten jos tosiaan on niin, että tuo Tilester on niin buginen, niin mistä näitä Tilegenejä sun muita saa ladattua? Pitääkö tässä vaan siirtyä takas C++:n pariin?
Kiitos.
Re: Tyhmät kysymykset (I/2012)
Posted: Sun Apr 14, 2013 4:05 pm
by Frozen
Kyrath wrote:Hei,
toimiiko tuo Tilester enää ollenkaan? Tuntuu, että mikään kartta mitä sillä teen ei toimi. CB lataa kaiken mukisematta, mutta karttaa ei näy, pelkkää mustaa. Kaikki muu toimii koodissa kuten tarkoitettu. Heti kun käytin mukana tulevaa cdm2.tilliä ja tileset.bmptä ni kartta ilmestyi. Pitääkö tilesetti tallentaa jossain tietyssä bittimuodossa vai mitä taikuutta tää vaatii? Olen yrittänyt sijoittaa omatekemät tillit valmiisiin tutorialkoodeihin, mutta aina tulee pelkkää mustaa.
Sitten jos tosiaan on niin, että tuo Tilester on niin buginen, niin mistä näitä Tilegenejä sun muita saa ladattua? Pitääkö tässä vaan siirtyä takas C++:n pariin?
Kiitos.
Tilegen
Re: Tyhmät kysymykset (I/2012)
Posted: Sat Apr 27, 2013 11:20 am
by Dyyd
Moro, kuinka tehdään sellainen koodi että jos ukkeli kävelee vaikka maailman kohtaan 100,100 niin mappi/taso vaihtuu?
Re: Tyhmät kysymykset (I/2012)
Posted: Sat Apr 27, 2013 1:23 pm
by legend
Dyyd wrote:Moro, kuinka tehdään sellainen koodi että jos ukkeli kävelee vaikka maailman kohtaan 100,100 niin mappi/taso vaihtuu?
Tervetuloa ohjelmoinnin pariin!
Yleensä on hyvä, jos näyttäisit, mitä olet itse yrittänyt. Siitä olisi helppo korjata asia.
Kuitenkin tässä yksinkertainen esimerkki.
Kun liikut ylöspäin ja hiukan sivulle, uusi taso latautuu.
Code: Select all
FrameLimit 40 'rajoita nopeutta
kartta = LoadMap("Media\cdm2.til","Media\tileset.bmp")
PlayObject kartta,0,0,1
ukko = LoadObject ("Media\guy.bmp",72)
SetupCollision ukko, kartta, 1, 4, 2
Repeat
//ukon ohjaus
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 ObjectX(ukko) > 150 And ObjectY(ukko) > 150
//vanha kartta tuhoutuu automaattisesti (huom. objektit eivät)
kartta = LoadMap("Media\cdm2.til","Media\tileset.bmp") //uusi kartta
PlayObject kartta,0,0,1
//sijoitetaan pelaaja kentän alkuun
PositionObject ukko, 0, 0
//kartta piirtyy nyt vanhojen objektien päälle, sillä se ladattiin viimeksi
//siirretään ukko piirtojärjestyksen päälle
ObjectOrder ukko, 1
EndIf
UpdateGame
CloneCameraPosition ukko
DrawScreen
Forever
Re: Tyhmät kysymykset (I/2012)
Posted: Sat Apr 27, 2013 1:38 pm
by Dyyd
Kiitti. Olin yrittänyt räpeltää End If ja Goto:lla.