Ero sivun ”Python 2/Wikishakkisivu” versioiden välillä
Poistettu sisältö Lisätty sisältö
Rivi 264:
{{hidden end|toggle=right}}
{{hidden begin|title=Kolmas karvalakkiversio
Seuraava ohjelma lukee kommentteja sisältävän shakkilautamallineen parametrinä annetusta syötetiedostosta asema0, tallettaa yläotsikkorivit sellaisenaan tulostiedosyoon, talletaa sisältörivit matriisiin, suorittaa siirron matriisissa (vasta testioperaation), tallettaa muokatun matriisin tulostiedostoon
;Koodi:
<source lang="Python">
# -*- coding: cp1252 -*-
import numpy as N
def shakkisiirto (asema0, asema1, siirto='ei siirtoa'):
#------------------------------------------------------------------
# Syotetiedoston testiluku ja tulostus
Rivi 282 ⟶ 284:
print " \n ==== Syotetiedosto ==== \n"
print(syote) # Tulostetaan merkkijono
#---------------------------------------------------------------------------------------
# Matriisin sl eli shakkilauta alustus ruutujen posititiotunuksilla, seka sisaltorivien
Rivi 288 ⟶ 290:
# mukaisella sisaltodatalla.
#------------------------------------------------------------------------------------------
sl = N.array(([' ', 'a8', 'b8', 'c8', 'd8', 'e8', 'f8', 'g8', 'h8', ' '],
[' ', 'a7', 'b7', 'c7', 'd7', 'e7', 'f7', 'g7', 'h7', ' '],
Rivi 297 ⟶ 299:
[' ', 'a2', 'b2', 'c2', 'd2', 'e2', 'f2', 'g2', 'h2', ' '],
[' ', 'a1', 'b1', 'c1', 'd1', 'e1', 'f1', 'g1', 'h1', ' ']))
#-------------------------------------------------------------------------------------------
# Matriisin solujen indeksit
#--------------------------------------------------------------------------------------------
# alkuosa a b c d e f g h loppuosa
# 8 sl[0][0] sl[0][1] sl[0][2] sl[0][3] sl[0][4] sl[0][5] sl[0][6] sl[0][7] sl[0][8] sl[0][9]
Rivi 311 ⟶ 313:
# 2 sl[6][0] sl[6][1] sl[6][2] sl[6][3] sl[6][4] sl[6][5] sl[6][6] sl[6][7] sl[6][8] sl[6][9]
# 1 sl[7][0] sl[7][1] sl[7][2] sl[7][3] sl[7][4] sl[7][5] sl[7][6] sl[7][7] sl[7][8] sl[7][9]
#-------------------------------------------------------------------------------------------
# Matriisin testitulostus
#--------------------------------------------------------------------------------------------
# print " \n ==== Alustetun matriisin testitulostus ==== \n"
# print sl[0][0], sl[0][1], sl[0][2], sl[0][3], sl[0][4], sl[0][5], sl[0][6], sl[0][7], sl[0][8], sl[0][9]
# print sl[0][0], sl[1][1], sl[1][2], sl[1][3], sl[1][4], sl[1][5], sl[1][6], sl[1][7], sl[1][8], sl[1][9]
# print sl[0][0], sl[2][1], sl[2][2], sl[2][3], sl[2][4], sl[2][5], sl[2][6], sl[2][7], sl[2][8], sl[2][9]
# print sl[0][0], sl[3][1], sl[3][2], sl[3][3], sl[3][4], sl[3][5], sl[3][6], sl[3][7], sl[3][8], sl[3][9]
# print sl[0][0], sl[4][1], sl[4][2], sl[4][3], sl[4][4], sl[4][5], sl[4][6], sl[4][7], sl[4][8], sl[4][9]
# print sl[0][0], sl[5][1], sl[5][2], sl[5][3], sl[5][4], sl[5][5], sl[5][6], sl[5][7], sl[5][8], sl[5][9]
# print sl[0][0], sl[6][1], sl[6][2], sl[6][3], sl[6][4], sl[6][5], sl[6][6], sl[6][7], sl[6][8], sl[6][9]
# print sl[0][0], sl[7][1], sl[7][2], sl[7][3], sl[7][4], sl[7][5], sl[7][6], sl[7][7], sl[7][8], sl[7][9]
#----------------------------------------------------------
# Talletetaan syötetiedoston sisaltorivit matriisiin
Rivi 333 ⟶ 335:
f_tulos = open(asema1, 'a') # Avataan lisayskirjoitusta varten.
f_rivi = open(asema0, 'r') # Avataan lukemista varten.
for j in range(0,4): # Luetaan ja talletaan otsikkorivit tulostiedostoon.
rivi = f_rivi.readline()
f_tulos.write(rivi)
for j in range(0,8): # Luetaan ja talletaan sisaltorivit matriisiin
rivi = f_rivi.readline()
r = rivi.split('|')
sl[j] = r
#----------------------------------------------------------
# Mariisin sisalto ennen siirtoa
Rivi 348 ⟶ 350:
print ' \n ====sisaltomatriisi ennen sirtoa==== \n'
print sl
#--------------------------------------------------------
# Suoritetaan siirto
#--------------------------------------------------------
# Parametrina annetun siirtomerkinnan tulostus
print(' \n ==== Siirto ==== \n')
print(siirto)
# ==== Tama on vasta testisiirto!!!!!!!=====
# Seuraavat rivit pitaa korvata yleisella logiikalla.
sl[4][5] = sl[6][5] # e4 <- e2
sl[6][5] = ' ' # tyhjataan e2
#----------------------------------------------------------
# Mariisin sisallon testitulostus siirron jalkeen
Rivi 367 ⟶ 369:
print ' \n ====sisaltomatriisi siirron jalkeen==== \n'
print sl
#----------------------------------------------------------
# Talletaan muokattu matriisi tulostiedostoon
#----------------------------------------------------------
for i in range(0,10):
if i==0:
jono = sl[j][i]
else:
jono = '|' + sl[j][i]
▲ for j in (0,7):
▲ jono = jono[1:6] + '|' + str(sl[j][i])
#------------------------------------------------------------------
# Talletaan alaotsikkorivit (3 kpl) tulostiedostoon
#------------------------------------------------------------------
rivi = f_rivi.readline()▼
▲ rivi = f_rivi.readline()
f_rivi.close() # suljetaan tiedosto
f_tulos.close() # suljetaan tiedosto
#------------------------------------------------------------------
# Tulostiedoston testiluku ja tulostus
Rivi 431 ⟶ 427:
}}
====sisaltomatriisi ennen sirtoa====
Rivi 475 ⟶ 460:
|
|=
8 |rd|nd|bd|qd|kd|bd|nd|rd|=
7 |pd|pd|pd|pd|pd|pd|pd|pd|=
6 | | | | | | | | |=
5 | | | | | | | | |=
4 | | | | |pl| | | |=
3 | | | | | | | | |=
2 |pl|pl|pl|pl| |pl|pl|pl|=
1 |rl|nl|bl|ql|kl|bl|nl|rl|=
a b c d e f g h
|
|