Tyhmät kysymykset (I/2009)
-
- Forum Veteran
- Posts: 2396
- Joined: Tue Aug 28, 2007 4:20 pm
Re: Tyhmät kysymykset
Voisko joku heittää yksinkertaisen esimerkin LOS algorithmistä? Googletin, mutta matikkani ei riitä ihan tuollaiseen.
PS. 1000. vastaus Tyhmissä kysymyksissä ^^
PS. 1000. vastaus Tyhmissä kysymyksissä ^^
-
- Advanced Member
- Posts: 281
- Joined: Sat Jun 28, 2008 5:19 pm
- Location: Hämeessä miä
Re: Tyhmät kysymykset
pystyykö täl samalla koodi pätkäl luoda vihut paikkoihin jossa kartan DATA-kerrokseen on merkitty esim. 2?
Code: Select all
Type pallo
Field x
Field y
End Type
kartta = LoadMap("Media\cdm2.til","Media\tileset.bmp")
pallokuva = LoadImage("media/cow.bmp")
tilew = 32
tileh = 32
For x = 1 to MapWidth()
For y = 1 to MapHeight()
If GetMap2(2, x, y) = 0 Then
p.pallo = New(pallo)
p\x = x*tilew + tilew/2 - ImageWidth(pallokuva)/2 - (MapWidth()*tilew/2+tilew)
p\y = y*tileh + tileh/2 - ImageHeight(pallokuva)/2 - (MapHeight()*tileh/2+tileh)
EndIf
Next y
Next x
Repeat
MoveCamera 0, (UpKey() - DownKey()) * 3
MoveCamera (RightKey() - LeftKey()) * 3
DrawGame
DrawToWorld OFF, ON, OFF
For p.pallo = Each pallo
DrawImage pallokuva, p\x, p\y
Next p
Text 10, 10, "FPS: " + FPS()
DrawScreen
Forever
-
- Advanced Member
- Posts: 485
- Joined: Tue Aug 28, 2007 3:53 pm
- Location: Suomi, Finland
- Contact:
Re: Tyhmät kysymykset
näinNassi_Setä wrote:pystyykö täl samalla koodi pätkäl luoda vihut paikkoihin jossa kartan DATA-kerrokseen on merkitty esim. 2?Code: Select all
koodia...
Code: Select all
If GetMap2(3, x, y) = 2 Then
-
- Moderator
- Posts: 1583
- Joined: Mon Aug 27, 2007 11:24 pm
- Location: Otaniemi - Mikkeli -pendelöinti
Re: Tyhmät kysymykset
Jos toteutat viholliset kuvilla, niin noinhan se menee. Kun vaan muutat oikean layerin ja arvon, tuhoojabotti sen demonstroikin.
Voisit kyllä edes muuttaa tyypin nimeä ettei olisi täysin ilmiselvä copypaste-hirviö.
Voisit kyllä edes muuttaa tyypin nimeä ettei olisi täysin ilmiselvä copypaste-hirviö.
RE: Tyhmät kysymykset
Olisi pari kysymystä...
(1.) Niin että ei jollain sattuisi olemaan jotain pudotusvalikon tapaista, kun resurssien haalinta projektini tarvitsisi semmoisen?
(2.) Miten saa semmoisen kuvan päälle tulevan ikkuna systeemin millainen on tuossa kuvassa toi ruskee levy vai pitääkö se minun piirtää paintilla
kuva on age of empirestä
(1.) Niin että ei jollain sattuisi olemaan jotain pudotusvalikon tapaista, kun resurssien haalinta projektini tarvitsisi semmoisen?
(2.) Miten saa semmoisen kuvan päälle tulevan ikkuna systeemin millainen on tuossa kuvassa toi ruskee levy vai pitääkö se minun piirtää paintilla
kuva on age of empirestä
One object to rule them all
Just don't kill the Master
Just don't kill the Master
Re: RE: Tyhmät kysymykset
Pudotusvalikkoja on ainakin vanhoilla foorumeilla näkynyt (http://coolbasic.com/oldforums), sieltä kannattaa etsiä. Ja jälkimmäinen homma on hyvin helppo: piirrä kehykset ja jätä läpinäkyvä osa mustaksi. Kuvan tulee olla pelin ikkunan kokoinen. Lataa se koodissa ihan kuvana ja piirrä se DrawGamen jälkeen ruudun vasempaan yläkulmaan (0,0 kun DrawToWorld on OFF). Tämän jälkeen voit vielä piirtää sen päälle tekstejä ja kuvia normaalisti.Maamyyrä wrote:Olisi pari kysymystä...
(1.) Niin että ei jollain sattuisi olemaan jotain pudotusvalikon tapaista, kun resurssien haalinta projektini tarvitsisi semmoisen?
(2.) Miten saa semmoisen kuvan päälle tulevan ikkuna systeemin millainen on tuossa kuvassa toi ruskee levy vai pitääkö se minun piirtää paintilla
kuva on age of empirestä
Peli piirtokomennoilla - voittaja, Virtuaalilemmikkipeli - voittaja,
Sukellusvenepeli - voittaja, Paras tileset - voittaja
Vaihtuva päähenkilö - voittaja, Autopeli - voittaja sekä
Hiirellä ohjattava peli - voittaja B)
Sukellusvenepeli - voittaja, Paras tileset - voittaja
Vaihtuva päähenkilö - voittaja, Autopeli - voittaja sekä
Hiirellä ohjattava peli - voittaja B)
-
- Advanced Member
- Posts: 281
- Joined: Sat Jun 28, 2008 5:19 pm
- Location: Hämeessä miä
Re: Tyhmät kysymykset
mutta miten sen koodipätkän voi vaihtaa objekteja "asettelevaks",kun nyt se käyttää kuvia?tuhoojabotti wrote:näinNassi_Setä wrote:pystyykö täl samalla koodi pätkäl luoda vihut paikkoihin jossa kartan DATA-kerrokseen on merkitty esim. 2?Code: Select all
koodia...
Code: Select all
If GetMap2(3, x, y) = 2 Then
-
- Advanced Member
- Posts: 485
- Joined: Tue Aug 28, 2007 3:53 pm
- Location: Suomi, Finland
- Contact:
Re: Tyhmät kysymykset
näin
Code: Select all
positionobject objekti, x*tilew + tilew/2 - ImageWidth(pallokuva)/2 - (MapWidth()*tilew/2+tilew), y*tileh + tileh/2 - ImageHeight(pallokuva)/2 - (MapHeight()*tileh/2+tileh)
Re: Tyhmät kysymykset
Code: Select all
padit=200
pateja=ON
If pateja=ON Then +MouseDown(1) padit=padit-1
If padit=<0 and mousedown(1) Then pateja=OFF
EndIf
Tällä rivillä tulee: syntax error, cant understand the statemend
If pateja=ON Then +MouseDown(1) padit=padit-1
Jokin komento on väärä, mutta en osaa arvella mikä.
-
- Moderator
- Posts: 1583
- Joined: Mon Aug 27, 2007 11:24 pm
- Location: Otaniemi - Mikkeli -pendelöinti
Re: Tyhmät kysymykset
+Mousedown(1) padit=padit-1.
Ei ole toimiva koodinpätkä, ei tarkoita CB:llä mitään. Varmaan tarkoitit tätä:
Kun painetaan hiirtä, padeista vähennetään 1.
Ja kiinnostaisi kuulla, ihan vain uteliaisuuttani, että miten ajattelit tuon toimivan? Mistä päättelit, että tuo plussa tuossa edessä tekisi, ja että mitä tekisi?
Ja huomaa: koska asetat padit joka kerta 200:n, ne eivät ikinä lopu, vaan ammuttaessa niistä vähennetään yksi ja seuraavan kerran tuohon looppiin mennessä asetat määrän taas 200:n.
Ei ole toimiva koodinpätkä, ei tarkoita CB:llä mitään. Varmaan tarkoitit tätä:
Kun painetaan hiirtä, padeista vähennetään 1.
Code: Select all
padit = padit - MouseDown(1)
Ja huomaa: koska asetat padit joka kerta 200:n, ne eivät ikinä lopu, vaan ammuttaessa niistä vähennetään yksi ja seuraavan kerran tuohon looppiin mennessä asetat määrän taas 200:n.
Re: Tyhmät kysymykset
Pitäskö tämän toimia teoriassa?
Tietäisin onko vika tässä vai jossain muualla.
Tarkoitan sisäkkäisiä jossitteluja
Tietäisin onko vika tässä vai jossain muualla.
Tarkoitan sisäkkäisiä jossitteluja
Code: Select all
If cursorp=4 And KeyHit(cbkeyreturn) Then
cursory=200
cursorp=1
actionp=actionp-1
If actionp<1 Then
Cls
Goto NextTurn
EndIf
Cls
Goto start
EndIf
Huuda mun ip:tä!
Re: Tyhmät kysymykset
Kyllä ihan sallitun näköistä koodia on. Goto:n käyttöä ei tosin yleensä suositella, koska sen kanssa koodin rakenne leviää nopeasti aika sekaiseksi ja vaikeasti hallittavaksi.
Peli piirtokomennoilla - voittaja, Virtuaalilemmikkipeli - voittaja,
Sukellusvenepeli - voittaja, Paras tileset - voittaja
Vaihtuva päähenkilö - voittaja, Autopeli - voittaja sekä
Hiirellä ohjattava peli - voittaja B)
Sukellusvenepeli - voittaja, Paras tileset - voittaja
Vaihtuva päähenkilö - voittaja, Autopeli - voittaja sekä
Hiirellä ohjattava peli - voittaja B)
Re: Tyhmät kysymykset
Jos minulla on type nimeltä esimerkiksi "Sotilaat", jonka fieldit ovat esimerkiksi def ja att, niin kuinka voin luodessani sotilaan, määrätä sille tietyn verran attackia ja defenseä? Ja kun olen luonut esimerkiksi 10 sotilasta, niin kuinka voin saada selville tietyn sotilaan attakin ja defensen?
-
- Forum Veteran
- Posts: 2396
- Joined: Tue Aug 28, 2007 4:20 pm
Re: Tyhmät kysymykset
Sepi: Tässä jokin viritelmä. En kokeillut koodia, mutta kaipa se toimii...
Code: Select all
for i = 1 to 10
sol.soldier = new(soldier)
sol\soldier_name = "sotamies "+i
sol\soldier_defence = rand(4,6)
sol\soldier_attack = rand(2,5)
next i
Code: Select all
function GetSoldierAttack(name$)
for sol.soldier = each soldier
if sol\soldier_name = name then return sol\soldier_attack
next sol
endfunction
Re: Tyhmät kysymykset
Tässä on vähän erilainen esimerkki tuota varten.
EDIT: lisäsin muutaman kommentin koodiin
Code: Select all
Type SOLDIERS
Field name As String
Field att
Field def
Field x
Field y
EndType
soldierimage = LoadImage("media\cow.bmp") 'sotilaan kuva
ghostcursor = MakeImage(1,1) 'haamukuva kursorille (tätä ei tarvitse piirtää missään vaiheessa)
// Luodaan muutama pelaaja. Eli kutsutaan NewSoldier-funktiota. Parametreiksi annetaan sotilaan nimi,att,def sekä sotilaan x ja y-koordinaatit
NewSoldier("Mikko",10,10,60,150)
NewSoldier("Matti",5,15,120,150)
NewSoldier("Pate",12,23,180,150)
NewSoldier("Lehmä",2,13,240,150)
// "Pelin" pääsilmukka
Repeat
For soldier.SOLDIERS = Each SOLDIERS 'Käydään läpi kaikki sotilaat
DrawImage soldierimage,soldier\x,soldier\y
// Jos kursori on sotilaan päällä, tulostetaan sen tiedot
If ImagesOverlap(soldierimage,soldier\x,soldier\y,ghostcursor,MouseX(),MouseY()) Then
Text 10,10,"name: "+soldier\name
Text 10,30,"attack: "+soldier\att
Text 10,50,"defence: "+soldier\def
EndIf
Next soldier
DrawScreen
Until EscapeKey()
// Funktio, joka luo uuden sotilaan (kun sitä kutsutaan)
Function NewSoldier(name$,att,def,x,y)
soldier.SOLDIERS = New(SOLDIERS)
soldier\name = name$
soldier\att = att
soldier\def = def
soldier\x = x
soldier\y = y
EndFunction
Last edited by Murskaaja on Tue Jul 08, 2008 11:23 pm, edited 1 time in total.
Re: Tyhmät kysymykset
Code: Select all
Type soldier
Field name
Field defence
Field attack
End type
For i = 1 to 1
sol.soldier = new(soldier)
sol\name = "sotamies"+i
sol\defence = rand(4,6)
sol\attack = rand(2,5)
Next i
Repeat
Text 10,10,FPS()
GetSoldierAttack(sotamies1$)
Function GetSoldierAttack(name$)
for sol.soldier = each soldier
If sol\name = name Then Return sol\attack
Text 10,20, sol\attack
Next sol
EndFunction
DrawScreen
Forever
Re: Tyhmät kysymykset
GetSoldier-funktio:Sepi wrote:Tuossa on tuo koodi jonkalaisen sain väsättyä tuosta Grandin esimerkin pohjalta, mutta se ei oikein toimi. Se vörkkii kyllä ihan hyvin, jos on vain yksi noita sotilaita. Mutta jos laittaa että 1 to 10, niin se tulostaa niiden kaikkien Attackin päällekkäin, vaikka yrittäisin saada vain sotilas1:n attackia selville. Osaisiko joku auttaa?Code: Select all
...koodia
Code: Select all
Function GetSoldierAttack(name$)
For sol.soldier = each soldier
If sol\name = name Then
Text 10,20, sol\attack
Return sol\attack
EndIf
Next sol
EndFunction
Asian tuntian oikein kirjoitus ohjeet:
-Älä tee yhdys sana virheitä.
-Vältä lyhenteitä mahd. muk.
-Yksi sanaiset lauseet? Unohda.
-Älä tee yhdys sana virheitä.
-Vältä lyhenteitä mahd. muk.
-Yksi sanaiset lauseet? Unohda.
Re: Tyhmät kysymykset
Suuret kiitokset, voisiko joku vielä neuvoa oikein kädestä pitäen, mitä tuo "palauttaa arvon" tai vain "palauttaa" tarkoittaa, sillä en millään hoksaa sitä
EDIT: ja vielä (ainakin) yksi kysymys: Kuinka voin tuossa nostaa vaikka sotamies2:n attakkia yhdellä? Eli kuinka saan kutsuttua juuri tiettyä sotilasta?
EDIT: ja vielä (ainakin) yksi kysymys: Kuinka voin tuossa nostaa vaikka sotamies2:n attakkia yhdellä? Eli kuinka saan kutsuttua juuri tiettyä sotilasta?
Re: Tyhmät kysymykset
Eli, funktiot ovat eräänlaisia aliohjelmia ja return-komennon avulla on mahdollista palauttaa varsinaiseen ohjelmaan esim. funktiossa tehdyn laskutoimituksen tulos. En tähän aikaan osaa selittää asioita selvästi, mutta toivottavasti tämä esimerkki selventää sinulle return-komennon toimintaa:Sepi wrote:Suuret kiitokset, voisiko joku vielä neuvoa oikein kädestä pitäen, mitä tuo "palauttaa arvon" tai vain "palauttaa" tarkoittaa, sillä en millään hoksaa sitä
Code: Select all
tulo = kertolasku(13,5)
Print tulo
WaitKey
// funktio joka palauttaa sen parametreiksi annetuiden lukujen tulon
Function kertolasku(luku1,luku2)
vastaus = luku1*luku2
Return vastaus
EndFunction
tein vielä yhden esimerkin, jossa pitäisi tulla käytyä kaikki kysymäsi asiat läpi:Sepi wrote:EDIT: ja vielä (ainakin) yksi kysymys: Kuinka voin tuossa nostaa vaikka sotamies2:n attakkia yhdellä? Eli kuinka saan kutsuttua juuri tiettyä sotilasta?
Code: Select all
Type SOLDIERS
Field ID
Field name As String
Field defence
Field attack
End type
max_players = 10
For i = 1 to max_players
soldier.SOLDIERS = new(SOLDIERS)
soldier\ID = i
soldier\name = "sotamies"+i
soldier\defence = rand(4,6)
soldier\attack = rand(2,5)
Next i
soldierID = 0
Locate 10,10
AddText "Paina nuolia sivuille vaihtaaksesi pelaajaa."
AddText "Paina nuolia ylös ja alas muuttaaksesi valitun"
AddText "pelaajan attack-arvoa."
Repeat
soldierID = soldierID+(KeyHit(cbkeyright)-KeyHit(cbkeyleft))
soldierID = Max(1,Min(10,soldierID))
PrintSoldierInfo(soldierID)
EditSoldierAttack(soldierID, KeyHit(cbkeyup)-KeyHit(cbkeydown))
DrawScreen
Forever
Function PrintSoldierInfo(ID)
For soldier.SOLDIERS = Each SOLDIERS
If soldier\ID = ID Then
Text 10,100,"Name: "+soldier\name
Text 10,120,"Attack: "+soldier\attack
Text 10,140,"Defence: "+soldier\defence
Exit
EndIf
Next soldier
EndFunction
Function EditSoldierAttack(ID,amount)
For soldier.SOLDIERS = Each SOLDIERS
If soldier\ID = ID Then
soldier\attack = soldier\attack+amount
Exit
EndIf
Next soldier
EndFunction
Re: Tyhmät kysymykset
Kiitokset Murskaaja, nyt luulen ymmärtäneeni tuon returnin Mutta taas tuli ongelmia, ymmärsin tuon koodisi kyllä, mutta siinä luodaan valmiiksi 10 sotilasta, joiden ID määräytyy sen i:n mukaan. Mutta kun yritän laittaa niin että nappia painaessa se luo uuden, niin en millään onnistu saamaan sille sitä ID:tä.