Page 14 of 23

Re: Tyhmät kysymykset (I/2011)

Posted: Thu Jun 28, 2012 4:55 pm
by skorpioni-cb
Laitoin tämän saman koodin SideX-projektini ketjuun, ongelma on:
Kun vihollinen tuhoutuu, tulee aina Object Assec Violation, enkä saa tätä korjattua, koodi tässä(BTW. ladatkaa sidex ja saatte mediat sieltä):

Code: Select all

Type Enemy
	Field object
	Field hp
EndType

Type BULLET
	Field object
EndType

Function color3ToPutPixel(r As Integer, g As Integer, b As Integer)
	Return (r Shl 16) + (g Shl 8) + b
EndFunction 
//Energia-hassutus, käynnistyykö serveri vai client
If GetWord(CommandLine(),1="-mode")Then
    //Internet not implemented yet
Else 
	Repeat
		If button(0,0,100,100,"Start game") Then
			Gosub mainGame
		EndIf 
		DrawScreen
	Until KeyHit(cbkeyreturn)
EndIf

Function Button(x As integer,y As integer,w As integer,h As integer,t As String,s As integer = 5)
	If MouseX()>x-1 And MouseY()>y-1 And MouseX()<x+w+1 And MouseY()<y+h+1 Then
		If MouseDown(1) Then Color 200,200,200 Else Color 190,190,190
		If MouseUp(1) Then Return True
	Else
	Color 220,220,220
	EndIf
	Box x+s,y,w-(s*2),h
	Box x,y+s,w,h-(s*2)
	Circle x,y,s*2
	Circle x+w-s*2,y,s*2
	Circle x+w-s*2,y+h-s*2,s*2
	Circle x,y+h-s*2,s*2
	Color cbblack
	CenterText x+w/2,y+h/2-TextHeight(t)/2,t$
EndFunction 
mainGame:
	SAFEEXIT OFF
	Randomize Timer()
	FrameLimit 100
	SCREEN 640,360
	SSvalue =0
	Smooth2D ON   
	gameFont = LoadFont("Media/font.ttf",18)
	SetFont gamefont
	godmode=0
	velX=0
	velY=0
	points=0
	r As Integer = 250
	g As Integer = 0
	b As Integer = 0
	sparkle = LoadImage("Media/sparkle.png")
	godSparkle = MakeEmitter(sparkle,10)
	ShowObject godSparkle,OFF
	masterBullet = LoadObject("Media/bullet.png")
	ShowObject masterBullet,OFF 
	redOrb = LoadObjectWithMask("Media/Energyorb.png",177,177,177,255,0,0)
	ShowObject redOrb,OFF
	player = LoadObjectWithMask("Media/ship.png",177,177,177,255,0,0)
	masterenemy = LoadObjectWithMask("Media/ship_enemy.png",177,177,177,255,0,255)
	ShowObject masterenemy,OFF
	PositionObject player,-250,0
	bgIMG = LoadImage("Media/backround.png")
	backround = MakeObjectFloor()
	PositionObject backround,0,0,-100
	PaintObject backround,bgIMG
	hp#=250.0
	sound = PlaySound ("Media/music.ogg")
	Repeat
		CloneObjectPosition godSparkle,player
		ParticleMovement godSparkle,-5,0,0.97
		ParticleEmission godSparkle,1,0,180
		Gosub moving
		Gosub createEnemy
		Gosub updateWorld
		If godMode Then
			GhostObject player,50
			ParticleEmission godSparkle,1,50,180
		Else
			GhostObject player,100
		EndIf 
		Color 255,255,255
		DrawGame 
		Text 0,0,"HP: "+hp+" Points: "+points
		If KeyHit(59) Then 
			ScreenShot "ScreenShot/SCREEN-"+SSvalue+".bmp"
		EndIf
		DrawScreen
	Forever
Return

Function changeImageColor(img,oldr,oldg,oldb,newr,newg,newb)
	Lock Image(img)
	DrawToImage img
		For x=0 To ImageWidth(img)
			For y=0 To ImageHeight(img)
				PickImageColor2 img,x,y
				If getRGB(RED)=oldr And getRGB(GREEN)=oldg And getRGB(BLUE)=oldb Then
					PutPixel2 x,y,color3ToPutPixel(newr, newg, newb),Image(img)
				EndIf
			Next y
		Next x
	DrawToScreen
	Unlock Image(img)
EndFunction  
Function LoadObjectWithMask(fileName As String, maskR, maskG, maskB, vR, vG, vB)
	tempIMG = LoadImage(filename)
	temp = MakeObject()
	changeImageColor(tempIMG,maskR,maskG,maskB,vR,vG,vB)
	PaintObject temp,-tempIMG
	Return temp
EndFunction
Function laskeProsentit#(määrä#,maxMäärä#)
	Return määrä*100/maxMäärä
EndFunction 

moving:
	If LeftKey() Or KeyDown(cbkeya) Then velX=velX-10
	If RightKey() Or KeyDown(cbkeyd) Then velX=velX+10
	If UpKey() Or KeyDown(cbkeyw) Then velY=velY+10
	If DownKey() Or KeyDown(cbkeys) Then velY=velY-10
	If KeyHit(cbkeyspace) Then Gosub createBullet
	//If KeyHit(cbkeyg) Then godMode = Not Godmode

	TranslateObject player,velX,velY
	velX=0
	velY=0
Return

createEnemy:
	If(Rand(100)<1) Then
		newEnemy.Enemy = New(Enemy)
		newEnemy\object = CloneObject(masterEnemy)
		PositionObject newEnemy\object,250,Rnd(-190,190) 
		ObjectInteger newEnemy\object,ConvertToInteger(newEnemy)
		newEnemy\hp = 100
	EndIf
Return 
updateWorld:
	For EnemyUnit.Enemy = Each Enemy
		MoveObject EnemyUnit\object,-5
		If ObjectsOverlap(EnemyUnit\object,player,1) Then
			DeleteObject EnemyUnit\object
			Delete EnemyUnit
			If Not godmode Then hp=hp-10
		EndIf

		If ObjectX(EnemyUnit\object) = -250 Then
			points=points-10
			EnemyUnit\hp = 0
		EndIf
		For ammo.BULLET = Each BULLET
			MoveObject ammo\object,5
			If ObjectsOverlap(ammo\object,EnemyUnit\object,2) Then
				EnemyUnit\hp=EnemyUnit\hp-100
				points = points + 10
				DeleteObject ammo\object
				Delete ammo
			EndIf
		If(EnemyUnit\hp <=0) Then
			DeleteObject EnemyUnit\object
			Delete EnemyUnit
		EndIf
		Next ammo
	Next EnemyUnit
Return  

Re: Tyhmät kysymykset (I/2011)

Posted: Thu Jun 28, 2012 5:11 pm
by axu
skorpioni-cb wrote:Laitoin tämän saman koodin SideX-projektini ketjuun, ongelma on:
Vastasin tuonne projektiketjuun, eli käytät tyyppikokoelman jäsentä ja objektia niiden poistamisen jälkeen. Klassinen :d

Re: Tyhmät kysymykset (I/2011)

Posted: Fri Jun 29, 2012 1:35 pm
by skorpioni-cb
Tyylikkäästi ollaan edittaamatta tota ekaa viestiä, mutta kumminkin:
Nyt kaikki toimii kuten pitääkin, paitsi että kun mä yritän saada musiikin looppaamaan, siitä tulee ekalla kerralla siedettävää, mutta tokalla kertaa tulee ihan kauheeta ear-rapea, mikäköhän on vikana, mediat löytyy taas SideX-viestiketjusta:

Code: Select all

Type Enemy
	Field object
	Field hp
EndType

Type BULLET
	Field object
EndType

Function color3ToPutPixel(r As Integer, g As Integer, b As Integer)
	Return (r Shl 16) + (g Shl 8) + b
EndFunction 
//Energia-hassutus, käynnistyykö serveri vai client
If GetWord(CommandLine(),1="-mode")Then
    //Internet not implemented yet
Else 
	Repeat
		If button(0,0,100,100,"Start game") Then
			Gosub mainGame
		EndIf 
		DrawScreen
	Until KeyHit(cbkeyreturn)
EndIf

Function Button(x As integer,y As integer,w As integer,h As integer,t As String,s As integer = 5)
	If MouseX()>x-1 And MouseY()>y-1 And MouseX()<x+w+1 And MouseY()<y+h+1 Then
		If MouseDown(1) Then Color 200,200,200 Else Color 190,190,190
		If MouseUp(1) Then Return True
	Else
	Color 220,220,220
	EndIf
	Box x+s,y,w-(s*2),h
	Box x,y+s,w,h-(s*2)
	Circle x,y,s*2
	Circle x+w-s*2,y,s*2
	Circle x+w-s*2,y+h-s*2,s*2
	Circle x,y+h-s*2,s*2
	Color cbblack
	CenterText x+w/2,y+h/2-TextHeight(t)/2,t$
EndFunction 
mainGame:
	SAFEEXIT OFF
	Randomize Timer()
	FrameLimit 100
	SCREEN 640,360
	SSvalue =0
	level=0
	Smooth2D ON   
	gameFont = LoadFont("Media/font.ttf",18)
	SetFont gamefont
	godmode=0
	velX=0
	velY=0
	points=0
	r As Integer = 250
	g As Integer = 0
	b As Integer = 0
	sparkle = LoadImage("Media/sparkle.png")
	godSparkle = MakeEmitter(sparkle,10)
	ShowObject godSparkle,OFF
	masterBullet = LoadObject("Media/bullet.png")
	ShowObject masterBullet,OFF 
	redOrb = LoadObjectWithMask("Media/Energyorb.png",177,177,177,255,0,0)
	ShowObject redOrb,OFF
	player = LoadObjectWithMask("Media/ship.png",177,177,177,255,0,0)
	masterenemy = LoadObjectWithMask("Media/ship_enemy.png",177,177,177,255,0,255)
	ShowObject masterenemy,OFF
	PositionObject player,-250,0
	bgIMG = LoadImage("Media/backround.png")
	backround = MakeObjectFloor()
	PositionObject backround,0,0,-100
	PaintObject backround,bgIMG
	hp#=250.0
	soundChanel = PlaySound ("Media/music.ogg")
	Repeat
		If Not SoundPlaying(soundChanel) Then PlaySound "Media/music.ogg"
		CloneObjectPosition godSparkle,player
		ParticleMovement godSparkle,-5,0,0.97
		ParticleEmission godSparkle,1,0,180
		Gosub moving
		Gosub createEnemy
		Gosub updateWorld
		If godMode Then
			GhostObject player,50
			ParticleEmission godSparkle,1,50,180
		Else
			GhostObject player,100
		EndIf 
		Color 255,255,255
		DrawGame 
		Text 0,0,"HP: "+hp+" Points: "+points+" Level: "+level
		MoveObject backround,-20-level
		level = points/100
		If points/100 > 50 Then level = 50
		If KeyHit(59) Then 
			ScreenShot "ScreenShot/SCREEN-"+SSvalue+".bmp"
		EndIf
		DrawScreen
	Forever
Return

Function changeImageColor(img,oldr,oldg,oldb,newr,newg,newb)
	Lock Image(img)
	DrawToImage img
		For x=0 To ImageWidth(img)
			For y=0 To ImageHeight(img)
				PickImageColor2 img,x,y
				If getRGB(RED)=oldr And getRGB(GREEN)=oldg And getRGB(BLUE)=oldb Then
					PutPixel2 x,y,color3ToPutPixel(newr, newg, newb),Image(img)
				EndIf
			Next y
		Next x
	DrawToScreen
	Unlock Image(img)
EndFunction  
Function LoadObjectWithMask(fileName As String, maskR, maskG, maskB, vR, vG, vB)
	tempIMG = LoadImage(filename)
	temp = MakeObject()
	changeImageColor(tempIMG,maskR,maskG,maskB,vR,vG,vB)
	PaintObject temp,-tempIMG
	DeleteImage tempIMG
	Return temp
EndFunction
Function laskeProsentit#(määrä#,maxMäärä#)
	Return määrä*100/maxMäärä
EndFunction 

moving:
	If LeftKey() Or KeyDown(cbkeya) Then velX=velX-10
	If RightKey() Or KeyDown(cbkeyd) Then velX=velX+10
	If UpKey() Or KeyDown(cbkeyw) Then velY=velY+10
	If DownKey() Or KeyDown(cbkeys) Then velY=velY-10
	If KeyDown(cbkeyspace) Then Gosub createBullet
	If KeyHit(cbkeyg) Then godMode = Not Godmode

	TranslateObject player,velX,velY
	velX=0
	velY=0
Return

createEnemy:
	If(Rand(100)<1+level) Then
		newEnemy.Enemy = New(Enemy)
		newEnemy\object = CloneObject(masterEnemy)
		PositionObject newEnemy\object,250,Rnd(-190,190) 
		ObjectInteger newEnemy\object,ConvertToInteger(newEnemy)
		newEnemy\hp = 100
		SetupCollision newEnemy\object,player,2,2,2
	EndIf
Return 
updateWorld:
	For EnemyUnit.Enemy = Each Enemy
		If EnemyUnit\hp > 0 Then
			MoveObject EnemyUnit\object,-5
			If ObjectsOverlap(EnemyUnit\object,player,1) Then
				EnemyUnit\hp = 0
				If Not godmode Then hp=hp-10
			EndIf
	
			If ObjectX(EnemyUnit\object) = -250 Then
				points=points-10
				EnemyUnit\hp = 0
			EndIf
			For ammo.BULLET = Each BULLET
				If ObjectsOverlap(ammo\object,EnemyUnit\object,2) Then
					EnemyUnit\hp=EnemyUnit\hp-100
					points = points + 10
					DeleteObject ammo\object
					Delete ammo
				EndIf
			Next ammo
		Else 
			DeleteObject EnemyUnit\object
			Delete EnemyUnit
		EndIf
	Next EnemyUnit
	For ammo.BULLET = Each BULLET
		MoveObject ammo\object,5
	Next ammo
Return 
createBullet:
	newBullet.BULLET = New(BULLET)
	newBullet\object = CloneObject(masterBullet)
	ObjectInteger newBullet\object,ConvertToInteger(newBullet)
	CloneObjectPosition newBullet\object,player
	MoveObject newBullet\object,40
Return 

Re: Tyhmät kysymykset (I/2011)

Posted: Fri Jun 29, 2012 1:43 pm
by valscion
skorpioni-cb wrote:Tyylikkäästi ollaan edittaamatta tota ekaa viestiä, mutta kumminkin:
Nyt kaikki toimii kuten pitääkin, paitsi että kun mä yritän saada musiikin looppaamaan, siitä tulee ekalla kerralla siedettävää, mutta tokalla kertaa tulee ihan kauheeta ear-rapea, mikäköhän on vikana, mediat löytyy taas SideX-viestiketjusta:

Code: Select all

	soundChanel = PlaySound ("Media/music.ogg")
	Repeat
		If Not SoundPlaying(soundChanel) Then PlaySound "Media/music.ogg"
Et aseta "soundChanel" muuttujaan uudelleen mitään arvoa, joten koodinpätkä Not SoundPlaying(soundChanel) palauttaa aina 1 ja "Media/music.ogg" tiedostoa soitetaan aina uudelleen. Voinet käyttää tätä iffiä mielummin:

Code: Select all

If Not SoundPlaying(soundChanel) Then soundChanel = PlaySound("Media/music.ogg")
P.S.
Se kirjoitetaan soundChannel, ei soundChanel. Chanel on muotitalo, channel on kanava.

Re: Tyhmät kysymykset (I/2011)

Posted: Fri Jun 29, 2012 1:53 pm
by skorpioni-cb
VesQ wrote:
skorpioni-cb wrote:Tyylikkäästi ollaan edittaamatta tota ekaa viestiä, mutta kumminkin:
Nyt kaikki toimii kuten pitääkin, paitsi että kun mä yritän saada musiikin looppaamaan, siitä tulee ekalla kerralla siedettävää, mutta tokalla kertaa tulee ihan kauheeta ear-rapea, mikäköhän on vikana, mediat löytyy taas SideX-viestiketjusta:

Code: Select all

	soundChanel = PlaySound ("Media/music.ogg")
	Repeat
		If Not SoundPlaying(soundChanel) Then PlaySound "Media/music.ogg"
Et aseta "soundChanel" muuttujaan uudelleen mitään arvoa, joten koodinpätkä Not SoundPlaying(soundChanel) palauttaa aina 1 ja "Media/music.ogg" tiedostoa soitetaan aina uudelleen. Voinet käyttää tätä iffiä mielummin:

Code: Select all

If Not SoundPlaying(soundChanel) Then soundChanel = PlaySound("Media/music.ogg")
P.S.
Se kirjoitetaan soundChannel, ei soundChanel. Chanel on muotitalo, channel on kanava.
No sori ettei englanti oo mun paras kieleni

Re: Tyhmät kysymykset (I/2011)

Posted: Fri Jun 29, 2012 2:05 pm
by valscion
skorpioni-cb wrote:No sori ettei englanti oo mun paras kieleni
Mielestäni en ilkkunut, vaan huomautin vaan. Ei tarvitse heti loukkaantua. Sitäpaitsi kerroin myös virheesi lähteen ja jätit sitten kokonaan siihen vastaamatta? Aikamoista offtopikkia. Palattaisiinko aiheeseen?

Re: Tyhmät kysymykset (I/2011)

Posted: Mon Jul 16, 2012 2:06 pm
by Hene
Miten saisin auton toimimaan fiksusti risteyksissä (eli niin, että auto valitsee itsestään aina jonkin ajokelpoisen kulkusuunnaan)?

E: Siis auton olisi tarkoitus ajaa itsestään hit-kerroksella suljetun tileset-kaupungin sisällä tottakai. Eli siis aina kun auton eteen avautuu uusia vapaita liikkumisreittejä (tai kun eteen ilmestyy hit-kerros), niin auton tulisi muuttaa suuntaansa.

Re: Tyhmät kysymykset (I/2011)

Posted: Mon Jul 16, 2012 4:22 pm
by Jonez
Helpoin ja konetehojen kannalta ehkä paras ratkaisu on tehdä tielle datakerrokseen checkpointit. Eli auto hakee vaikka lähimmän checkpointin, kääntyy ja ajaa sitä kohti. Kun auto saavuttaa checkpointin (on tarpeeksi lähellä sitä, esim. distance(autox, autoy, checkx, checky) < 5), auto hakee seuraavan checkpointin.
EDIT:

Jos välttämättä haluat että autolla on vapaampi tekoäly (ei checkpointteja), käytä ObjectPick-komentoa. Eli tee oma poiminta-objekti, joka asetetaan tietyin väliajoin (esim. joka sekunti) auton kohdalle. Objekti tekee poiminnan vaikka eteenpäin ja molemmille sivuille 45 asteen kulmassa. Sitten katsotaan etäisyys poimittuihin (kartan) kohteisiin (pickedX(), pickedY(), distance()). Jos etäisyys on korkea, on siinä suunnassa tilaa liikkua. Jos etäisyys on pieni, on siinä suunnassa seinä lähellä.

Mitä useammin suoritat poiminnan, ja mitä enemmän näitä teet (esim. 6 poimintaa joka suuntaan yhteensä), sitä hitaampi yhden hahmon tekoäly on.


Re: Tyhmät kysymykset (I/2011)

Posted: Mon Jul 16, 2012 5:51 pm
by valscion
Jonez wrote:Jos välttämättä haluat että autolla on vapaampi tekoäly (ei checkpointteja), käytä ObjectPick-komentoa. Eli tee oma poiminta-objekti, joka asetetaan tietyin väliajoin (esim. joka sekunti) auton kohdalle. Objekti tekee poiminnan vaikka eteenpäin ja molemmille sivuille 45 asteen kulmassa. Sitten katsotaan etäisyys poimittuihin (kartan) kohteisiin (pickedX(), pickedY(), distance()). Jos etäisyys on korkea, on siinä suunnassa tilaa liikkua. Jos etäisyys on pieni, on siinä suunnassa seinä lähellä.

Mitä useammin suoritat poiminnan, ja mitä enemmän näitä teet (esim. 6 poimintaa joka suuntaan yhteensä), sitä hitaampi yhden hahmon tekoäly on.
Juuri näin toimii oikeastaan NetMatchin bottien tekoäly. Game.cb, rivi 317 eteenpäin, voinet siitä ottaa esimerkkiä.

Re: Tyhmät kysymykset (I/2011)

Posted: Mon Jul 23, 2012 10:06 am
by Combatti

Code: Select all

//Pelaajan koordinaatit
x = 130
y = 130
//Maan koordinaatit
x2 = 0
y2 = 250

Repeat 
    //Piirretään maa ja pelaaja
    Box x,y,16,16
    Box x2,y2,400,50
    //Jos maa ja pelaaja ovat osuneet toisiinsa, niin pelaajan y-koordinaattia ei lasketa
    If BoxOverlap(x,y,16,16,x2,y2,400,50) Then 
        y=y
    Else //Ellei näin ole..
        y=y+2 //..Niin sitä lasketaan.
    EndIf 
    
    //Pelaajan kontrollit
    If RightKey() Then x=x+1
    If LeftKey() Then x=x-1
    //Itse kaatumistilanne, ohjelma siis kaatuu, kun tämä ehto on palauttanut toden kaksi kertaa
    If KeyHit(cbkeyspace) Then
    Repeat
    y = y - 1
    yM = yM +1
    Until yM = 32
    
    EndIf 
    
    DrawScreen

Until EscapeKey()
Tämä kaataa ohjelman. Miksi? Image

Re: Tyhmät kysymykset (I/2011)

Posted: Mon Jul 23, 2012 10:09 am
by Latexi95
Combatti wrote:

Code: Select all

//Pelaajan koordinaatit
x = 130
y = 130
//Maan koordinaatit
x2 = 0
y2 = 250

Repeat 
    //Piirretään maa ja pelaaja
    Box x,y,16,16
    Box x2,y2,400,50
    //Jos maa ja pelaaja ovat osuneet toisiinsa, niin pelaajan y-koordinaattia ei lasketa
    If BoxOverlap(x,y,16,16,x2,y2,400,50) Then 
        y=y
    Else //Ellei näin ole..
        y=y+2 //..Niin sitä lasketaan.
    EndIf 
    
    //Pelaajan kontrollit
    If RightKey() Then x=x+1
    If LeftKey() Then x=x-1
    //Itse kaatumistilanne, ohjelma siis kaatuu, kun tämä ehto on palauttanut toden kaksi kertaa
    If KeyHit(cbkeyspace) Then
    Repeat
    y = y - 1
    yM = yM +1
    Until yM = 32
    
    EndIf 
    
    DrawScreen

Until EscapeKey()
Tämä kaataa ohjelman. Miksi? Image
Tulee loputon looppi koska yM on edellisen ehdon jälkeen 32. Uudella kierroksella sitten siihen lisätään yksi ennen vertailua jolloin se on 33 eikä näin ole sama kuin 32. Lopputuloksena siis loputon looppi ja ohjelman jäätyminen koska DrawScreeniä ei kutsuta.

Re: Tyhmät kysymykset (I/2011)

Posted: Mon Jul 23, 2012 10:13 am
by Combatti
Latexi95 wrote:
Combatti wrote:

Code: Select all

//Pelaajan koordinaatit
x = 130
y = 130
//Maan koordinaatit
x2 = 0
y2 = 250

Repeat 
    //Piirretään maa ja pelaaja
    Box x,y,16,16
    Box x2,y2,400,50
    //Jos maa ja pelaaja ovat osuneet toisiinsa, niin pelaajan y-koordinaattia ei lasketa
    If BoxOverlap(x,y,16,16,x2,y2,400,50) Then 
        y=y
    Else //Ellei näin ole..
        y=y+2 //..Niin sitä lasketaan.
    EndIf 
    
    //Pelaajan kontrollit
    If RightKey() Then x=x+1
    If LeftKey() Then x=x-1
    //Itse kaatumistilanne, ohjelma siis kaatuu, kun tämä ehto on palauttanut toden kaksi kertaa
    If KeyHit(cbkeyspace) Then
    Repeat
    y = y - 1
    yM = yM +1
    Until yM = 32
    
    EndIf 
    
    DrawScreen

Until EscapeKey()
Tämä kaataa ohjelman. Miksi?
Tulee loputon looppi koska yM on edellisen ehdon jälkeen 32. Uudella kierroksella sitten siihen lisätään yksi ennen vertailua jolloin se on 33 eikä näin ole sama kuin 32. Lopputuloksena siis loputon looppi ja ohjelman jäätyminen koska DrawScreeniä ei kutsuta.
Kun sanon, että ohjelma kaatuu, se myös kaatuu, eli ei vastaa. Mutta korjaanpa tuon.
EDIT:

Juu, nyt ei kaadu. Kiitosta.

P.s. Eikai ketään haittaa nää mun hymiöt, koska en yhtään tykkää foorumin vakiohymiöistä.

Re: Tyhmät kysymykset (I/2011)

Posted: Mon Jul 23, 2012 10:24 am
by Awaclus
Combatti wrote:
EDIT:

Juu, nyt ei kaadu. Kiitosta. Image

P.s. Eikai ketään haittaa nää mun hymiöt, koska en yhtään tykkää foorumin vakiohymiöistä.
Minua ei haittaa, mutta niitä saattaa haitata, jotka ovat estäneet hymiöt asetuksista ja nuo silti näkyvät.

Re: Tyhmät kysymykset (I/2011)

Posted: Mon Jul 23, 2012 10:25 am
by valscion
Combatti wrote:Kun sanon, että ohjelma kaatuu, se myös kaatuu, eli ei vastaa. Mutta korjaanpa tuon.
Yleensä kaatumisella tarkoitetaan sitä että ohjelma sammuu arvaamattomasti, joskus heittäen virheraporttia. Ohjelman jäätyminen puolestaan on juuri tuo kuvaamasi "ei vastaa" -tilanne.
Combatti wrote:P.s. Eikai ketään haittaa nää mun hymiöt, koska en yhtään tykkää foorumin vakiohymiöistä.
Haittaa. Jos foorumin oletushymiöt ovat mielestästi tyhmiä, älä käytä niitä. Ei siinä ole mitään pahaa että tekee viestejä joissa ei ole hymiöitä, päinvastoin.

Re: Tyhmät kysymykset (I/2011)

Posted: Tue Jul 31, 2012 8:34 pm
by Hene
Yritin testimielessä tehdä tekstin salaus- ja salauksen purkuohjelmaa, mutta jostain syystä ohjelma ei onnistu purkamaan salausta kunnolla. Salaamaton lause on "dont you worry babe. im an expert.", mutta kun salausta yrittää purkaa niin ohjelma palauttaa "d1e1dt 2e1e2a 2c1e1h1h2e babe. i1c a1d e2d1fe1ht."

Code: Select all

SCREEN 800,800
mitä_avataan=1 //0=LUO UUSI SALATTU .TXT -TIEDOSTO, 1=AVAA AIEMPI SALATTU .TXT -TIEDOSTO
tiedostonimi$="exa.txt" //MIHIN POLKUUN TIEDOSTO TALLENNETAAN/AVATAAN

//SALAUS
If mitä_avataan=0 Then
theline$="dont you worry babe. im an expert." //TEKSTI JOKA SALATAAN

theline$=Replace(theline$,"a", "1/")
theline$=Replace(theline$,"b", "2/")
theline$=Replace(theline$,"c", "3/")
theline$=Replace(theline$,"d", "4/")
theline$=Replace(theline$,"e", "5/")
theline$=Replace(theline$,"f", "6/")
theline$=Replace(theline$,"g", "7/")
theline$=Replace(theline$,"h", "8/")
theline$=Replace(theline$,"i", "9/")
theline$=Replace(theline$,"j", "10/")
theline$=Replace(theline$,"k", "11/")
theline$=Replace(theline$,"l", "12/")
theline$=Replace(theline$,"m", "13/")
theline$=Replace(theline$,"n", "14/")
theline$=Replace(theline$,"o", "15/")
theline$=Replace(theline$,"p", "16/")
theline$=Replace(theline$,"q", "17/")
theline$=Replace(theline$,"r", "18/")
theline$=Replace(theline$,"s", "19/")
theline$=Replace(theline$,"t", "20/")
theline$=Replace(theline$,"u", "21/")
theline$=Replace(theline$,"v", "22/")
theline$=Replace(theline$,"w", "23/")
theline$=Replace(theline$,"x", "24/")
theline$=Replace(theline$,"y", "25/")
theline$=Replace(theline$,"z", "26/")
theline$=Replace(theline$,"å", "27/")
theline$=Replace(theline$,"ä", "28/")
theline$=Replace(theline$,"ö", "29/")

f=OpenToWrite (tiedostonimi$) //MIHIN POLKUUN SALATTU TIEDOSTO TALLENNETAAN
    WriteLine f,theline$
CloseFile f

AddText "SALATTU TEKSTI: "+theline$+""
AddText "POLKU: "+tiedostonimi$+""
AddText ""
AddText "SALAUS VALMIS."
DrawScreen
WaitKey
EndIf

If mitä_avataan=1 Then
f=OpenToEdit(tiedostonimi$)
    theline$=ReadLine(f)
    alkup_theline$=theline$
CloseFile f

theline$=Replace(theline$,"1/", "a")
theline$=Replace(theline$,"2/", "b")
theline$=Replace(theline$,"3/", "c")
theline$=Replace(theline$,"4/", "d")
theline$=Replace(theline$,"5/", "e")
theline$=Replace(theline$,"6/", "f")
theline$=Replace(theline$,"7/", "g")
theline$=Replace(theline$,"8/", "h")
theline$=Replace(theline$,"9/", "i")
theline$=Replace(theline$,"10/", "j")
theline$=Replace(theline$,"11/", "k")
theline$=Replace(theline$,"12/", "l")
theline$=Replace(theline$,"13/", "m")
theline$=Replace(theline$,"14/", "n")
theline$=Replace(theline$,"15/", "o")
theline$=Replace(theline$,"16/", "p")
theline$=Replace(theline$,"17/", "q")
theline$=Replace(theline$,"18/", "r")
theline$=Replace(theline$,"19/", "s")
theline$=Replace(theline$,"20/", "t")
theline$=Replace(theline$,"21/", "u")
theline$=Replace(theline$,"22/", "v")
theline$=Replace(theline$,"23/", "w")
theline$=Replace(theline$,"24/", "x")
theline$=Replace(theline$,"25/", "y")
theline$=Replace(theline$,"26/", "z")
theline$=Replace(theline$,"27/", "å")
theline$=Replace(theline$,"28/", "ä")
theline$=Replace(theline$,"29/", "ö")

f=OpenToWrite (tiedostonimi$) //MIHIN POLKUUN SALATTU TIEDOSTO TALLENNETAAN
    WriteLine f,theline$
CloseFile f

AddText "SALATTU TEKSTI: "+alkup_theline$+""
AddText "PURETTU TEKSTI: "+theline$+""
AddText "POLKU: "+tiedostonimi$+""
AddText ""
AddText "SALAUKSEN PURKAMINEN VALMIS."
DrawScreen

WaitKey
EndIf

Re: Tyhmät kysymykset (I/2011)

Posted: Tue Jul 31, 2012 10:39 pm
by MetalRain
Hene wrote:Yritin testimielessä tehdä tekstin salaus- ja salauksen purkuohjelmaa, mutta jostain syystä ohjelma ei onnistu purkamaan salausta kunnolla. Salaamaton lause on "dont you worry babe. im an expert.", mutta kun salausta yrittää purkaa niin ohjelma palauttaa "d1e1dt 2e1e2a 2c1e1h1h2e babe. i1c a1d e2d1fe1ht."

Code: Select all

SCREEN 800,800
mitä_avataan=1 //0=LUO UUSI SALATTU .TXT -TIEDOSTO, 1=AVAA AIEMPI SALATTU .TXT -TIEDOSTO
tiedostonimi$="exa.txt" //MIHIN POLKUUN TIEDOSTO TALLENNETAAN/AVATAAN

//SALAUS
If mitä_avataan=0 Then
theline$="dont you worry babe. im an expert." //TEKSTI JOKA SALATAAN

theline$=Replace(theline$,"a", "1/")
theline$=Replace(theline$,"b", "2/")
theline$=Replace(theline$,"c", "3/")
theline$=Replace(theline$,"d", "4/")
theline$=Replace(theline$,"e", "5/")
theline$=Replace(theline$,"f", "6/")
theline$=Replace(theline$,"g", "7/")
theline$=Replace(theline$,"h", "8/")
theline$=Replace(theline$,"i", "9/")
theline$=Replace(theline$,"j", "10/")
theline$=Replace(theline$,"k", "11/")
theline$=Replace(theline$,"l", "12/")
theline$=Replace(theline$,"m", "13/")
theline$=Replace(theline$,"n", "14/")
theline$=Replace(theline$,"o", "15/")
theline$=Replace(theline$,"p", "16/")
theline$=Replace(theline$,"q", "17/")
theline$=Replace(theline$,"r", "18/")
theline$=Replace(theline$,"s", "19/")
theline$=Replace(theline$,"t", "20/")
theline$=Replace(theline$,"u", "21/")
theline$=Replace(theline$,"v", "22/")
theline$=Replace(theline$,"w", "23/")
theline$=Replace(theline$,"x", "24/")
theline$=Replace(theline$,"y", "25/")
theline$=Replace(theline$,"z", "26/")
theline$=Replace(theline$,"å", "27/")
theline$=Replace(theline$,"ä", "28/")
theline$=Replace(theline$,"ö", "29/")

f=OpenToWrite (tiedostonimi$) //MIHIN POLKUUN SALATTU TIEDOSTO TALLENNETAAN
    WriteLine f,theline$
CloseFile f

AddText "SALATTU TEKSTI: "+theline$+""
AddText "POLKU: "+tiedostonimi$+""
AddText ""
AddText "SALAUS VALMIS."
DrawScreen
WaitKey
EndIf

If mitä_avataan=1 Then
f=OpenToEdit(tiedostonimi$)
    theline$=ReadLine(f)
    alkup_theline$=theline$
CloseFile f

theline$=Replace(theline$,"1/", "a")
theline$=Replace(theline$,"2/", "b")
theline$=Replace(theline$,"3/", "c")
theline$=Replace(theline$,"4/", "d")
theline$=Replace(theline$,"5/", "e")
theline$=Replace(theline$,"6/", "f")
theline$=Replace(theline$,"7/", "g")
theline$=Replace(theline$,"8/", "h")
theline$=Replace(theline$,"9/", "i")
theline$=Replace(theline$,"10/", "j")
theline$=Replace(theline$,"11/", "k")
theline$=Replace(theline$,"12/", "l")
theline$=Replace(theline$,"13/", "m")
theline$=Replace(theline$,"14/", "n")
theline$=Replace(theline$,"15/", "o")
theline$=Replace(theline$,"16/", "p")
theline$=Replace(theline$,"17/", "q")
theline$=Replace(theline$,"18/", "r")
theline$=Replace(theline$,"19/", "s")
theline$=Replace(theline$,"20/", "t")
theline$=Replace(theline$,"21/", "u")
theline$=Replace(theline$,"22/", "v")
theline$=Replace(theline$,"23/", "w")
theline$=Replace(theline$,"24/", "x")
theline$=Replace(theline$,"25/", "y")
theline$=Replace(theline$,"26/", "z")
theline$=Replace(theline$,"27/", "å")
theline$=Replace(theline$,"28/", "ä")
theline$=Replace(theline$,"29/", "ö")

f=OpenToWrite (tiedostonimi$) //MIHIN POLKUUN SALATTU TIEDOSTO TALLENNETAAN
    WriteLine f,theline$
CloseFile f

AddText "SALATTU TEKSTI: "+alkup_theline$+""
AddText "PURETTU TEKSTI: "+theline$+""
AddText "POLKU: "+tiedostonimi$+""
AddText ""
AddText "SALAUKSEN PURKAMINEN VALMIS."
DrawScreen

WaitKey
EndIf
Tässä mennään pieleen siinä että esim 1/ täsmää myös merkkijonon 21/ tai 11/ loppuosaan, tämä pätee kaikille yhdeksälle ensimmäiselle. Purkamisessa tulisi joko purkaa ensin pidemmät pätkät ja sitten vasta lyhemmät tai vaihtoehtoisesti on käyttää merkkijonoja jotka eivät ole toistensa osia, esimerkiksi salaamalla joka kirjaimen kaksinumeroisella luvulla. Kolmantena vaihtoehtona voisi vaikka lukea merkkijonoa aina seuraavaan / merkkiin saakka esim countword ja getwordin avulla.

Tyhmät kysymykset (I/2012)

Posted: Mon Aug 27, 2012 1:16 pm
by valscion
Jatketaan perinteikästä linjaa ja pilkotaan jättiketju pienempiin osiin. Sarjan edelliset viestiketjut ovat:
Tyhmät kysymykset (I/2009)
Tyhmät kysymykset (II/2009)
Tyhmät kysymykset (I/2010)
Tyhmät kysymykset (I/2011)

Ylläpito pilkkoo kaikki yli 100-sivuiset aiheet jatkoketjuiksi. Lisäksi aloitetaan uusi ketju vuosittain.

Tyhmät kysymykset - tarkoitus

Törmäsitkö ongelmaan, jonka tiedät olevan oikeasti ihan helppo, mutta ratkaisu ei vain osu silmään? Onko ongelmasi niin vähäpätöinen, ettei sitä varten kannata tehdä uutta ketjua?

Alkuperäisen ketjun johdanto meni näin:
iTKEVAnAKKI wrote:Eli tänne kaikki yksinkertaiset kysymykset johin et ole keksinyt ratkaisua. Mutta muistakaa, että käytätte ensin hakua!

Re: Tyhmät kysymykset (I/2012)

Posted: Mon Sep 03, 2012 6:15 pm
by LoolPoop
Okei tämä ongelma on varmasti ollut muillakin. Mutta ongelma on että aina kun yritän suorittaa minkä tahansa ohjelma joka lataa jotain (esim ukko = LoadObject("Media\guy.bmp", 360)) tulee MAV. Sama toistuu harjoitus ohjelmissa. minulla on vista ja latoin "suorita järjestelmä valvojana".

Re: Tyhmät kysymykset (I/2012)

Posted: Mon Sep 03, 2012 6:17 pm
by Awaclus
LoolPoop wrote:Okei tämä ongelma on varmasti ollut muillakin. Mutta ongelma on että aina kun yritän suorittaa minkä tahansa ohjelma joka lataa jotain (esim ukko = LoadObject("Media\guy.bmp", 360)) tulee MAV. Sama toistuu harjoitus ohjelmissa. minulla on vista ja latoin "suorita järjestelmä valvojana".
Kokeile laittaa pienempi numero kuin 360.

Re: Tyhmät kysymykset (I/2012)

Posted: Mon Sep 03, 2012 6:21 pm
by LoolPoop
ei toiminut ja se vika toistuu kaikissa harjoitus ohjelmissa.