Tyhmät kysymykset (I/2009)

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

Re: Tyhmät kysymykset

Post by TheFish »

rami123 wrote:miten minä sellasen teen? en oikeen osaa :?
Laita ennen päälooppia muuttujan alustus ("apuriNopeus = 5") ja sitten käytät kaikissa apurin liikuttamiskohdissa sitä muuttujaa luvun sijasta. Sitten laitat tuonne napin painamiseen jotain tämmöistä:

Code: Select all

if apuriNopeus > 0 then
    apuriNopeus = 0
else
    apuriNopeus = 5
endif 
CoolBasic henkilökuntaa
Kehittäjä
rami123
Advanced Member
Posts: 354
Joined: Mon Jun 23, 2008 8:20 pm
Location: Kittilä

Re: Tyhmät kysymykset

Post by rami123 »

kiitos neuvosta , mutta ratkasin sen todella purkkaisella koodilla , jota en meinannut millään saada toimimaan :roll:
Character
Active Member
Posts: 113
Joined: Thu Nov 27, 2008 2:16 pm

Re: Tyhmät kysymykset

Post by Character »

Olen tekemässä biljardipeliä enkä saa ratkaistua yhtä ongelmaa. Kun hiirtä painaa pohjassa
lyöntivoima kasvaa ja kun päästää hiiren ylös, maila lyö ja pallo menee oikeaan suuntaan ja oikealla
nopeudella. Suunta on siis sama kuin mailan kulma. Miten tämän saisi tehtyä? :?
temu92
Web Developer
Web Developer
Posts: 1226
Joined: Mon Aug 27, 2007 9:56 pm
Location: Gamindustri
Contact:

Re: Tyhmät kysymykset

Post by temu92 »

Kerrankin jaksoin paneutua ongelmaan oikein kunnolla. Tässä sinulle melkein valmis runko biljardipeliin :P

Code: Select all

SCREEN 640, 480

// Alustetaan kaikki muuttujat floateiksi
x#		= ScreenWidth()/2	// X koordinaatti
y#		= ScreenHeight()/2	// Y koordinaatti
xforce#	= 0 // X suunnan vektori
yforce#	= 0 // Y suunnan vektori
force#	= 0 // Force (voima)
pforce#	= 0 // Pending force (odottava voima)
angle#	= 0 // Angle (kulma)

Const KITKA	= 0.99

Repeat
	// Jos voima ON suurempi kuin 0
	If force > 0 Then
		// Vähennetään voimaa 
		force	= Round(force * KITKA, 2)
		
		xforce	= Round(xforce * KITKA, 2)
		yforce	= Round(yforce * KITKA, 2)
	Else // Jos voima ei ole suurempi kuin 0
		// niin piiretään tähtäinviiva
		Line MouseX(), MouseY(), x, y
	EndIf
	
	// Jos painetaan hiirestä niin kasvatetaan odottavaa voimaa
	If MouseDown(1) And force <= 0 Then
		// Kasvatetaan odottavaa voimaa
		pforce	= pforce + 0.1
	EndIf
	
	// Rajoitetaan odottavan voiman suuruutta
	If pfocre > 20 Then pforce = 20
	
	// Kun päästetään hiiri ylös niin lyödään palloa
	If MouseUp(1) And force <= 0 And pforce > 0 Then
		// Pistetään voimaan odottava voima ja nollataan odottava voima
		force	= pforce
		pforce	= 0
		
		// Muutetaan kulma hiiren ja pallon suunnan mukaisesti
		angle	= GetAngle(MouseX(), MouseY(), x, y)//GetAngle(x, y, MouseX(), MouseY())
		
		// Lasketaan vektorien voimien suuruudet
		xforce	= Cos(angle) * force
		yforce	= - Sin(angle) * force
	EndIf	
	
	// Muutetaan pallon koordinaatteja
	x	= x + xforce
	y	= y + yforce
	
	// Estetään palloa menemästä rajojen ulkopuolelle
	If x < 0 Or x > ScreenWidth() Then xforce	= -xforce
	If y < 0 Or y > ScreenHeight() Then yforce	= -yforce
	
	// Piirretään pallo
	Color 255, 255, 255
	Circle x-8, y-8, 16, True
	
	// Piirretään tekstejä
	Text 0, 0, 		"x: "+x
	Text 0, 13, 	"y: "+y
	Text 0, 26, 	"force: "+force
	Text 0, 39, 	"pforce: "+pforce
	Text 200, 0, 	"xforce: "+xforce
	Text 200, 13, 	"yforce: "+yforce
	Text 200, 26, 	"angle: "+angle
	
	DrawScreen
Forever

Function Round(value#, ac)
	strvalue$	= Str(value#)
	
	lefts$		= GetWord(strvalue$, 1, ".")
	rights$		= GetWord(strvalue$, 2, ".")
	
	rounded#	= Float(lefts$ + "." + Left(rights$, ac))
	
	Return rounded
EndFunction
Character
Active Member
Posts: 113
Joined: Thu Nov 27, 2008 2:16 pm

Re: Tyhmät kysymykset

Post by Character »

Kiitos, lähdenkin tästä tutkailemaan koodia. :)
Nassi_Setä
Advanced Member
Posts: 281
Joined: Sat Jun 28, 2008 5:19 pm
Location: Hämeessä miä

Re: Tyhmät kysymykset

Post by Nassi_Setä »

kuinka toteuttaa:kun objekti menee ruudun ulkopuolelle sen healt vähenisi.
yrittetty on mutta healt vähenee kokoajan
\../(-_-)\../ <---klick MyBrute Image
Jotain evilii on tekeillä....
temu92
Web Developer
Web Developer
Posts: 1226
Joined: Mon Aug 27, 2007 9:56 pm
Location: Gamindustri
Contact:

Re: Tyhmät kysymykset

Post by temu92 »

Muista että objektimaailman koordinaatit eivät ole samat kuin kuvien. Tässä kätevät funktiot niiden konversioon:

Code: Select all

Function ScreenToWorldX(sc)
    wc = CameraX() - ScreenWidth() / 2 + sc
    Return wc
End Function

Function ScreenToWorldY(sc)
    wc = CameraY() + ScreenHeight() / 2 - sc
    Return wc
End Function

Function WorldToScreenX(wc)
    sc = -CameraX() + ScreenWidth() / 2 + wc
    Return sc
End Function

Function WorldToScreenY(wc)
    sc = CameraY() + ScreenHeight() / 2 - wc
    Return sc
End Function
Noiden avulla tuon tekeminen pitäisi olla helppoa. Tarkistat vain funktioiden WorldToScreenX() ja WorldToScreenY() avulla ettei mennä ruudulta ulos.
Character
Active Member
Posts: 113
Joined: Thu Nov 27, 2008 2:16 pm

Re: Tyhmät kysymykset

Post by Character »

Millä tavalla toteuttaa biljardipallot? Taulukolla, typellä, yksitellen..?
Last edited by Character on Mon Jan 05, 2009 9:11 pm, edited 4 times in total.
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: Tyhmät kysymykset

Post by esa94 »

Typeillä. Taulukot ovat aina huonompi vaihtoehto.
Character
Active Member
Posts: 113
Joined: Thu Nov 27, 2008 2:16 pm

Re: Tyhmät kysymykset

Post by Character »

Mutta entäs kun olen piirtänyt kaikki pallot yksitellen piirto-ohjelmalla enkä ole käyttänyt piirtokomentoja.
Sittenhän se on jo vähän hankalempaa.. Vai? :shock:
TheFish
Developer
Developer
Posts: 477
Joined: Mon Aug 27, 2007 9:28 pm
Location: Joensuu

Re: Tyhmät kysymykset

Post by TheFish »

Character wrote:Mutta entäs kun olen piirtänyt kaikki pallot yksitellen piirto-ohjelmalla enkä ole käyttänyt piirtokomentoja.
Sittenhän se on jo vähän hankalempaa.. Vai? :shock:
Nimeä kuvat numerojärjestyksessä (siis "1.png", "2.png" "3.png" jne). Sitten lataat ne for-loopilla

Code: Select all

for i = 0 to 9
   ballImgs(i) = loadimage(i + ".png")
next i
CoolBasic henkilökuntaa
Kehittäjä
kaivinkone

Re: Tyhmät kysymykset

Post by kaivinkone »

Ongelma on se että typestä luodut kuvat menee objektien päälle... Miten saan piirrettyä objektit ylimmäiseksi eikä niin että se typen tekemä kuva on päällimmäisenä?
temu92
Web Developer
Web Developer
Posts: 1226
Joined: Mon Aug 27, 2007 9:56 pm
Location: Gamindustri
Contact:

Re: Tyhmät kysymykset

Post by temu92 »

Typestä luodut kuvat?

Jos ymmärsin oikein sinun pitäisi selvitä jommalla kummalla tavalla. Eli joko:

Code: Select all

// Komento asettaa objektin päällimmäiseksi
ObjectOrder objekti, 1
tai..

Code: Select all

Repeat
  MoveObject objekti, 10, 10 // Tehdään objekt(e)illa jotakin

  Drawgame // Jos tälläinen on, se pitäisi poistaa tai siirtää parempaan paikkaan

  DrawImage kuva, 20, 20 // Piirtää kuvan. Piirtää sen kaikkien objektien päälle jos Drawgamea on käytetty
  Drawscreen
Forever
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 4:53 pm

Re: Tyhmät kysymykset

Post by Jani »

kuinka voi lukea hiiren rullan pyöityksen?
manuaalista ei löytynyt.
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
MAVmaggot
Advanced Member
Posts: 468
Joined: Fri Aug 31, 2007 10:18 pm
Location: bitspace

Re: Tyhmät kysymykset

Post by MAVmaggot »

Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 4:53 pm

Re: Tyhmät kysymykset

Post by Jani »

aaa...

Tuossahan se oli :)
MouseZ()
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
Character
Active Member
Posts: 113
Joined: Thu Nov 27, 2008 2:16 pm

Re: Tyhmät kysymykset

Post by Character »

Vielä yksi ongelma.. Kuinka saan biljardipallot aluksi kolmioon?
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 4:53 pm

Re: Tyhmät kysymykset

Post by Jani »

yrität sommitella niitä... :?
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: Tyhmät kysymykset

Post by phons »

Jani wrote:yrität sommitella niitä... :?
Saiko tuosta nyt paljoa irti? Jos keksit miten laskea niiden paikat niin pistä For - Next lausekkeella jotenkin nätisti ne alkupaikat(Grandi on näis ollu hyvä :D ). Normaalisti ja purkammaisesti voit vaan pistää jokasen pallon x:n ja y:n sellati yksitellen et ne on kolmiossa.
Image
Character
Active Member
Posts: 113
Joined: Thu Nov 27, 2008 2:16 pm

Re: Tyhmät kysymykset

Post by Character »

Ookoo. Yritä nyt sitten sommitella niitä. :D
Locked