2014-06-05 203 views
0

我創建國際象棋的方式比賽,但不知道如何保存和載入遊戲狀態是我有這樣的代碼的一部分如何在遊戲中保存/加載遊戲的狀態?

(define-struct piece(color nove? type)) 
;;tablero lista de listas de fichas 
(define-struct estado (board turn fichaSel)) 


(define bpawn (bitmap "b-peon.png")) 
(define brook (bitmap "b-torre.png")) 
(define bcaballo (bitmap "b-caballo.png")) 
(define bbish (bitmap "b-arfil.png")) 
(define bquee (bitmap "b-reina.png")) 
(define bking (bitmap "b-rey.png")) 
(define wpawn (bitmap "w-peon.png")) 
(define wrook (bitmap "w-torre.png")) 
(define wcaballo (bitmap "w-caballo.png")) 
(define wbish (bitmap "w-arfil.png")) 
(define wquee (bitmap "w-reina.png")) 
(define wking (bitmap "w-rey.png")) 
(define board (bitmap "board.jpg")) 

這是董事會是名單

列表
(define board1 (list (list torreb caballob arfilb reinab reyb arfilb caballob torreb) 
         (list peonb peonb peonb peonb peonb peonb peonb peonb) 
         (list empty empty empty empty empty empty empty empty) 
         (list empty empty empty empty empty empty empty empty) 
         (list empty empty empty empty empty empty empty empty) 
         (list empty empty empty empty empty empty empty empty) 
         (list pawnw pawnw pawnw pawnw pawnw pawnw pawnw pawnw) 
         (list rookw knightw bishopw queenw kingw bishopw knightw rookw))) 

我這樣做是爲了保存遊戲的狀態:

(define (save file) 
(write-file (string-append Subcarpeta archivo ".txt") 
       "game state" ))   

但並不像你插入遊戲狀態的「遊戲狀態」對我來說,保存遊戲

我該怎麼做?

+0

這是球拍?我會假設你可以使用一些序列化過程。 – leppie

+0

是的,是球拍。我可以使用什麼流程? – user3672728

回答

0

在OS和其他編程語言中稱爲文件句柄的Scheme和Racket中的terminoligy都是端口。

你當然有lots of possibilities但這些在lambda語言的初級到中級學生都不支持。有了先進的學生,你有以下選擇:

#!htdp/asl 

(with-output-to-file "file.rc" 
    (lambda() (write '(your data structure)))) 

(with-input-from-file "file.rc" 
    (lambda() (read)))   ; ==> (your data structure) 

這樣做的問題是,如果該文件存在,你會得到一個錯誤。隨着#!racket你可以添加標誌來解決這個問題:

#!racket 

(with-output-to-file "file.rc" 
    (lambda() (write '(your data structure))) 
    #:mode 'text 
    #:exists 'truncate) 

(with-input-from-file "file.rc" 
    (lambda() (read)))   ; ==> (your data structure) 
+0

謝謝,但我嘗試在中級學生的語言,儘可能做? – user3672728

+0

@ user3672728你沒有在你的問題的任何地方寫過你正在使用的語言,所以我認爲'#!racket'。下次請指定語言!唯一有I/O的學生語言是高級學生,因此您需要切換。 – Sylwester

+0

我這樣做,但它返回這個錯誤:'帶輸出到文件:arity不匹配; 參數的預期數量不匹配給定數量 預計:2個加可選參數關鍵字#:存在和#:模式 給出:6個 參數...: 「file.rc」 (拉姆達()。 ..) '#:模式 '文字 '#:存在 'truncate ' – user3672728