Tein tässä perjantai-päivän huviksi tälläisen pienen harjoituspelin. Peli siis on ihan simppeli 3x3 ristinolla, jota pelataan kaksinpelinä numpadin näppäimistä (teen myös yksinpelin tietokonetta vastaan myöhemmin).
Pelillä ei ole kovin suurta viihdearvoa, tein sen ihan perus harjoittelun ja tekoälyn tekemisen harjoittelua varten (tekoäly siis tulee myöhemmin).
Ristinolla
Ristinolla
- Attachments
-
- ristinolla.rar
- (586.58 KiB) Downloaded 314 times
Coolbasic roguelike-projekti menossa 8)
Progress bar @@@@@10%@@@@@
Pahasti jäätymässä...
Progress bar @@@@@10%@@@@@
Pahasti jäätymässä...
Re: Ristinolla
Ööh.. miten tätä pelataan?
Edit: Joo niinpäs lukikin Ei tässä vielä paljon intoa ollut, kun ei ollut botti vastustajaa. Mutta toivottavasti jaksat sen tehdä Muuten ihan hyvin näytti toimivan
Edit: Joo niinpäs lukikin Ei tässä vielä paljon intoa ollut, kun ei ollut botti vastustajaa. Mutta toivottavasti jaksat sen tehdä Muuten ihan hyvin näytti toimivan
Last edited by MAVmaggot on Fri Sep 26, 2008 5:58 pm, edited 2 times in total.
Re: Ristinolla
Numpadistä. Luki alotustekstissä jo.
Coolbasic roguelike-projekti menossa 8)
Progress bar @@@@@10%@@@@@
Pahasti jäätymässä...
Progress bar @@@@@10%@@@@@
Pahasti jäätymässä...
Re: Ristinolla
Aika ruma ja vaikeakäyttöinen. Tässä opensourcena, muutama päivä sitten koodailtu ristinolla:
Code: Select all
'--------------------------------
'RISTINOLLA
'--------------------------------
Errors 0
'laita ruutu hiukan pienemmäksi
SCREEN 64*3,64*3
SetFont LoadFont("arial", 80)
SetWindow "Tic Tac Toe"
'tee tietotaulukko tyhjäksi
Dim paikka(2, 2) As String
Gosub reset
'taustaväri harmaaksi
ClsColor cbSilver
'piirtovärin asetamme mustaksi
Color cbBlack
tme = 0
Repeat
'piirrä ruudukko
Line 0,0,0,192
Line 64,0,64,192
Line 128,0,128,192
Line 192,0,192,191
Line 0,0,192,0
Line 0,64,192,64
Line 0,128,192,128
Line 0,192,192,192
'piirretään X:ät ja O:t
For x = 0 To 2
For y = 0 To 2
CenterText x * 64 + 32, y * 64 + 32, paikka(x, y), 2
Next y
Next x
'voitontarkistus
xw = 0
ow = 0
v = 0
p = 0
v1 = 0
v2 = 0
For x = 0 To 2
For y = 0 To 2
If paikka(x, 0) = "X" And paikka(x, 1) = "X" And paikka(x, 2) = "X" Then xw = 1 : p = 1 : px = x : Exit
If paikka(x, 0) = "O" And paikka(x, 1) = "O" And paikka(x, 2) = "O" Then ow = 1 : p = 1 : px = x : Exit
If paikka(0, y) = "X" And paikka(1, y) = "X" And paikka(2, y) = "X" Then xw = 1 : v = 1 : py = y : Exit
If paikka(0, y) = "O" And paikka(1, y) = "O" And paikka(2, y) = "O" Then ow = 1 : v = 1 : py = y : Exit
If paikka(0, 0) = "X" And paikka(1, 1) = "X" And paikka(2, 2) = "X" Then xw = 1 : v1 = 1 : Exit
If paikka(0, 0) = "O" And paikka(1, 1) = "O" And paikka(2, 2) = "O" Then ow = 1 : v1 = 1 : Exit
If paikka(2, 0) = "X" And paikka(1, 1) = "X" And paikka(0, 2) = "X" Then xw = 1 : v2 = 1 : Exit
If paikka(2, 0) = "O" And paikka(1, 1) = "O" And paikka(0, 2) = "O" Then ow = 1 : v2 = 1 : Exit
Next y
Next x
If xw Then
If p Then viiva(px * 64 + 32, 0, px * 64 + 32, ScreenHeight())
If v Then viiva(0, py * 64 + 32, ScreenWidth(), py * 64 + 32)
If v1 Then viiva(0, 0, ScreenWidth(), ScreenHeight())
If v2 Then viiva(ScreenWidth(), 0, 0, ScreenHeight())
DrawScreen
Wait 750
ClearMouse
Cls
CenterText ScreenWidth() / 2, 0, "X"
CenterText ScreenWidth() / 2, 64, "WIN!"
DrawScreen
WaitMouse
ClearMouse
Gosub reset
EndIf
If ow Then
If p Then viiva(px * 64 + 32, 0, px * 64 + 32, ScreenHeight())
If v Then viiva(0, py * 64 + 32, ScreenWidth(), py * 64 + 32)
If v1 Then viiva(0, 0, ScreenWidth(), ScreenHeight())
If v2 Then viiva(ScreenWidth(), 0, 0, ScreenHeight())
DrawScreen
Wait 750
ClearMouse
Cls
CenterText ScreenWidth() / 2, 0, "O"
CenterText ScreenWidth() / 2, 64, "WIN!"
DrawScreen
WaitMouse
ClearMouse
Gosub reset
EndIf
'jos ei löytynyt enää tyhjiä paikkoja, niin resetoidaan
'automaattisesti
check = 1
For x = 0 To 2
For y = 0 To 2
If paikka(x, y) = "" Then check = 0
Next y
Next x
If check And tme = 0 Then tme = 28
If tme Then tme = tme - 1
If check And tme = 0 Then Gosub reset
'päivitä ristinolla
If MouseDOwn(1) Then
hiirix#=MouseX()
hiiriy#=MouseY()
'nyt katsotaan, minne laitetaan
'ruksi:talletetaan ruudun x- ja y-
'koordinaatit muuttujiin ruutux ja
'ruutuy
ruutux = RoundUp(hiirix#/64) - 1
ruutuy = RoundUp(hiiriy#/64) - 1
'Easter-egg: jos CTRL + R-yhdistelmä on tosi, valitaan satunnaisesti
If KeyDown(cbKeyLAlt) And KeyDown(cbKeyR) Then
ruutux = Rand(0, 2)
ruutuy = Rand(0, 2)
EndIf
'kirjoitetaan valitulle paikalle
'Tehdään tämä vain, jos ruudussa on
'vapaata
If paikka(ruutux, ruutuy)=""
paikka(ruutux, ruutuy) = vuoro$
'vaihda vuoroa
If vuoro$="X" Then vuoro$="O" Else vuoro$="X"
EndIf
EndIf
If KeyDown(cbKeyLshift) And KeyHit(cbKeyR) Then Gosub reset
DrawScreen
Forever
reset:
paikka(0, 0)=""
paikka(1, 0)=""
paikka(2, 0)=""
paikka(0, 1)=""
paikka(1, 1)=""
paikka(2, 1)=""
paikka(0, 2)=""
paikka(1, 2)=""
paikka(2, 2)=""
'ensimmäisenä vuoro on pelaaja 1:hden(X)
vuoro$="X"
Return
Function viiva(x1, y1, x2, y2, bld=5)
ang# = GetAngle(x1, y1, x2, y2)
For i = 0 To Distance(x1, y1, x2, y2)
Circle x1 + Cos(ang#) * i - bld / 2, y1 - Sin(ang#) * i - bld / 2, bld
Next i
EndFunction
Kiinnostuin pelien tekemisestä ennen 1. luokkaa.
Sitten 3. luokalla tuli CB. Ja siitä se alkoi.
Blender! TF2! CB! Game Maker! Nokia-mollaus! Kitaransoitto! Breakdance! MadTracker! Minecraft!
Sitten 3. luokalla tuli CB. Ja siitä se alkoi.
Blender! TF2! CB! Game Maker! Nokia-mollaus! Kitaransoitto! Breakdance! MadTracker! Minecraft!
Re: Ristinolla
Heh, kiva kun tehdään näitä yksinkertaisia pelejä. Tykkään niistä.
Solar Eclipse
We're in a simulation, and God is trying to debug us.
Re: Ristinolla
Ristinolla voittamattomalla tekoälyllä Graaffisesti puuroa(vielä) eikä sisällä kaksinpeliä(vielä )
Noin 320 riviä koodia
Noin 320 riviä koodia
Kommentteja!Näköjään jäi omat tulokset mukaan
- Attachments
-
- mkn.rar
- Versio 0 :D
- (587.25 KiB) Downloaded 274 times