Tyhmät kysymykset (I/2012)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
User avatar
Misthema
Advanced Member
Posts: 312
Joined: Mon Aug 27, 2007 8:32 pm
Location: Turku, Finland
Contact:

Re: Tyhmät kysymykset (I/2012)

Post 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.
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 4:53 pm

Re: Tyhmät kysymykset (I/2012)

Post 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?
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: Tyhmät kysymykset (I/2012)

Post 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.
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
Konstaduck
Advanced Member
Posts: 267
Joined: Sat Dec 17, 2011 3:09 pm
Location: Nurmijärvi, Finland
Contact:

Re: Tyhmät kysymykset (I/2012)

Post by Konstaduck »

Miten saisin Inputiin/Advancedinputtiin merkkijonorajan? Menneillään olevassa projektissa sitä tarvitsisin ja alla oleva kikkailu ei toiminut.. :D

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


Konstaduck.net
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
Kumiankka
Member
Posts: 65
Joined: Wed May 18, 2011 5:17 pm
Location: Artjärvi

Re: Tyhmät kysymykset (I/2012)

Post 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 
User avatar
Konstaduck
Advanced Member
Posts: 267
Joined: Sat Dec 17, 2011 3:09 pm
Location: Nurmijärvi, Finland
Contact:

Re: Tyhmät kysymykset (I/2012)

Post 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...
Konstaduck.net
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: Tyhmät kysymykset (I/2012)

Post 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

Code: Select all

If a And b Or c Then
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?
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: Tyhmät kysymykset (I/2012)

Post 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

Code: Select all

If a And b Or c Then
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
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Tyhmät kysymykset (I/2012)

Post 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.
naputtelija
Devoted Member
Posts: 718
Joined: Wed Nov 03, 2010 7:56 pm
Location: Joku piste pohjoisessa.

Re: Tyhmät kysymykset (I/2012)

Post 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?
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
Character
Active Member
Posts: 113
Joined: Thu Nov 27, 2008 2:16 pm

Re: Tyhmät kysymykset (I/2012)

Post 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...
legend
Advanced Member
Posts: 371
Joined: Wed Nov 18, 2009 8:06 pm

Re: Tyhmät kysymykset (I/2012)

Post 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?
Character
Active Member
Posts: 113
Joined: Thu Nov 27, 2008 2:16 pm

Re: Tyhmät kysymykset (I/2012)

Post by Character »

jaa olikin noin yksinkertaista :shock: kumma kun en itse tajunnut.. mutta kiitos avusta
User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Tyhmät kysymykset (I/2012)

Post 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
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Tyhmät kysymykset (I/2012)

Post 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.
Kyrath
Newcomer
Posts: 1
Joined: Sun Apr 14, 2013 3:47 pm

Re: Tyhmät kysymykset (I/2012)

Post 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.
User avatar
Frozen
Advanced Member
Posts: 282
Joined: Fri Jan 01, 2010 4:46 pm
Location: Suomi

Re: Tyhmät kysymykset (I/2012)

Post 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
Image
Työn alla:
Jotakin epäjulkaistua
Dyyd
Newcomer
Posts: 2
Joined: Sat Apr 27, 2013 11:08 am

Re: Tyhmät kysymykset (I/2012)

Post by Dyyd »

Moro, kuinka tehdään sellainen koodi että jos ukkeli kävelee vaikka maailman kohtaan 100,100 niin mappi/taso vaihtuu?
legend
Advanced Member
Posts: 371
Joined: Wed Nov 18, 2009 8:06 pm

Re: Tyhmät kysymykset (I/2012)

Post 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
Dyyd
Newcomer
Posts: 2
Joined: Sat Apr 27, 2013 11:08 am

Re: Tyhmät kysymykset (I/2012)

Post by Dyyd »

Kiitti. Olin yrittänyt räpeltää End If ja Goto:lla. :lol:
Locked