Σάββατο 6 Φεβρουαρίου 2016

Φιδάκι Νο2

Σε αυτή την αναθεώρηση του παιχνιδιού έχει προστεθεί ο κανόνας ότι για να βγει κανείς από το παιχνίδι θα πρέπει να φτάσει στο τελικό κουτάκι, ένα μετά το 30 (που δεν φαίνεται αλλά είναι το κουτί με τους νικητές)! Αν φέρει ζάρι μεγαλύτερο από εκείνο που θα το πάει στο τέρμα, τότε κάνει κίνηση προς τα πίσω!

Από το κώδικα έχουν βγει οι προαιρετικές πια διαμέσου (gosub), οι ρουτίνες καλούνται απ΄ευθείας. Επειδή αν υπάρχει πίνακας με ίδιο όνομα, ο διερμηνευτής προτιμάει τους πίνακες, για να μην γίνει λάθος έχω αλλάξει την ρουτίνα πιόνι σε ΠιόνιΔείξε  (προσοχή στις ρουτίνες, μικρά μεγάλα και τόνοι μετράνε)

Για να γυρίσει πίσω το πιόνι...υπολογίζω όλες τις θέσεις και τις βάζω στο σωρό, όπως βάζω και τις τυχόν θέσεις που μπορεί να γυρίσει από το μεγάλο φίδι (και έτσι από πρώτος κανείς γίνεται τελευταίος, αφού πάει στην θέση 1).

Χρειαζόμαστε το ταμπλό του επιτραπέζιου και το πρόγραμμα παρακάτω:
https://drive.google.com/open?id=0BwSrrDW66vvvbFhtUVZYOF9tU1U

Το ταμπλό το βάζουμε στο φάκελο του χρήστη, που ανοίγει με την παρακάτω εντολή:
σύστημα κατ$
Εκεί σώνονται και τα προγράμματα που φτιάχνουμε!
Μπορούμε να τον ξαναβρούμε το φάκελο αν αλλάξουμε τον τρέχοντα (π.χ. κατάλογος c: αλλάζει στον c:), με την παρακάτω εντολή:
κατάλογος χρήστη

Αν ψάχνουμε κάποιο αρχείο που γράψαμε π.χ. την ΤΥΠΩΣΕ τότε με την εντολή:
Αρχεια "gsb","ΤΥΠΩΣΕ"
Ανοίγει όλα τα αρχεία και ψάχνει την ΤΥΠΩΣΕ και μας γυρνάει στη οθόνη όλα τα ονόματα αρχείων!

\\ Φιδάκι!
Οθόνη,0
Καθαρό Α$
Κλάση Κ_5χ6 {
      θ, μεταφορά$
      Συνάρτηση Χ { =(-1) υπολ 6}      
      Συνάρτηση Υ { =(-1) Δια 6}
}
Κλάση Πιόνι {
      θέση_π, νο
      νέα_θέση
      Τμήμα Αφαίρεσε {
            .θέση_π<=0
      }
      Τμήμα Μετακίνηση {
            .θέση_π<=.νέα_θέση
            .νέα_θέση<=0
      }
}
Πίνακας Θέσεις(31)=Κ_5χ6(), Πιόνια(4)=Πιόνι(), ΣειράΝικητών(4)
Για ι=1 Έως 4 { Για Πιόνια(ι-1) {.θέση_π=1 : .νο=ι}}
Για ι=1 εως 30 {
      Αν ((ι-1) Υπολ 12)>5 Τότε { θέσεις(ι).θ=6*((ι-1) Δια 6)+(6-(ι-1) υπολ 6) } Αλλιώς θέσεις(ι).θ=ι
}
\\ φίδια!
Θέσεις(27).μεταφορά$="22,23,24,13,12,1"
Θέσεις(21).μεταφορά$="16,15,10,9"
Θέσεις(19).μεταφορά$="18,7"
Θέσεις(17).μεταφορά$="8,9,4"
\\ σκάλες
Θέσεις(3).μεταφορά$="10,15,22"
Θέσεις(5).μεταφορά$="8"
Θέσεις(11).μεταφορά$="14,23,26"
Θέσεις(20).μεταφορά$="29"
\\ εικόνα
Εικόνα "snake" στο Α$
Γενικές χ,υ, θχ, θυ, Χρ(5)
Χρ(1)=14,11,13,12
Στοίχισε(&α$, &χ,&υ,&θχ,&θυ)
Ανανεώση 5000
Φοντο 1,5
κ=υ/1200
Βάλε_Τίτλο("Φιδάκι 2", 0, θυ*.8, 0)
Βάλε_Τίτλο("Ζάρι", 0,θυ*.4, θυ, θχ)
ΠλαίσιοΠαικτών(0,θυ*.4, Θυ, θχ, κ)
Για ι=1 Έως 4 {
      ΠιόνιΣτοΠλαίσιο(0,θυ*.4,θυ, θχ, κ, ι)
}
Βάλε_Τίτλο("Σειρά", θχ+χ,θυ*.4, θυ)
ΠλαίσιοΠαικτών(θχ+χ,θυ*.4,θυ,Χ.σημεία, κ)
Για ι=1 Έως 4 {
      ΠιόνιΣτοΠλαίσιο(θχ+χ,θυ*.4, θυ,Χ.σημεία, κ, ι)
}
θέση θχ, θυ
Εικόνα Α$, χ
\\ το φιδάκι έχει 6 Χ 5 θέσεις
Κάνε ΜετΧ(χχ,κ)=(χ Δια 6)*χχ+(κ/30)*χ+χ/40+θχ
Κάνε ΜετΥ(υυ)=(υ Δια 5)*υυ+υ/20+θυ
Κράτησε
cls, -5
Δείξε_Όλα(-1,"")
ολα=1
Νικητές=0
Ενώ Ενκομ$="" και ολα>0  {
      ολα=0
      Για ι=1 Έως 4 {
            Αν πιόνια(ι-1).θέση_π>0 Τότε {
                  ολα++
                  Ζάρι=Τυχαίος(1,6)   '' μικρό Ζάρι!
                  Αν πιόνια(ι-1).θέση_π+Ζάρι >31 τότε {
                        ΠαίξεΜε(ι, Ζάρι, Αληθές, μορφή$("{0}",Ζάρι))
                  } Αλλιώς {
                        Για μ=1 Έως Ζάρι {
                              ΠαίξεΜε(ι, 1, ζαρι=μ, μορφή$("{0}",Ζάρι))
                        }     
                  }
            }
            Αν νικητές=3 Τότε Έξοδος
      }
}
Αν νικητές=3 Τότε {
      Για ι=1 Έως 4 {
            Αν πιόνια(ι-1).θέση_π>0 Τότε πιόνια(ι-1).θέση_π=0 : ΣειράΝικητών(ι-1)=4
      }
}
Δείξε_Όλα(-1,"")
Τέλος
Ρουτίνα ΠαίξεΜε(Πιόνι, Ζάρι, τελικό, ζαρ$)
      Τοπική πιόνι1=-1, μεζάρι=Αληθές, πρ$, ι
      Σωρός Νέος {
            Για Πιόνια(Πιόνι-1) {
                        Αν μεζάρι Τότε {
                        Άν (Ζάρι+.θέση_π)<=30 Τότε { 
                                 .νέα_θέση=Ζάρι+.θέση_π 
                                 πιόνι1=Πιόνι
                                 Αν τελικό Τότε {
                                       πρ$=Θέσεις(.νέα_θέση).μεταφορά$
                                       Αν πρ$<>"" Τότε Σωρός πρ$
                                 }
                        } Αλλιώς.Άν (Ζάρι+.θέση_π)>31 τότε {
                              \\ Φιδάκι 2....επιστροφή!
                               .νέα_θέση= 61-Ζάρι-.θέση_π
                              πιόνι1=Πιόνι
                              Δες οκ {
                              Αν Ζάρι+.θέση_π>32 Τότε {
                                     πρ$=Θέσεις(.νέα_θέση).μεταφορά$
                                     Αν πρ$<>"" Τότε Σωρός πρ$
                                     Για ι=61-Ζάρι-.θέση_π  έως 29 {
                                          Βάλε ι 
                                     }
                               }
                              Αν .θεση_π<30 τότε {
                                    Για ι=30 έως .θέση_π+1 {
                                          Βάλε ι
                                    }
                              }      
                              }
                           Αν είναρ τότε  Διάβασε .νέα_θέση
                              αν όχι οκ τότε ανανέωση 50 : δοκιμη
                        } Αλλιώς .θέση_π=0 : νικητές++ : ΣειράΝικητών(Πιόνι-1)=νικητές
                  } Αλλιώς {
                          Διάβασε .νέα_θέση     
                  }   
            }
            Δείξε_Όλα(πιόνι1, ζαρ$) 
            μεζάρι=0
            Αν ΕινΑρ Τότε Κυκλικά
      }
Τέλος Ρουτίνας
Ρουτίνα Δείξε_Όλα(εκτός, λεζ$)
      Τοπική ι, κιν, εξ=αληθές
      Για κιν=1 Έως 4 {
            Άφησε
            Για ι=0 Έως 3 {
                  Για Πιόνια(ι) {
                        Αν .θέση_π>0 Τότε {
                              Αν .νο<>εκτός Τότε {
                                    Για θέσεις(.θέση_π) {
                                          ΠιόνιΔείξε(..Χ(),..Υ(),.νο)
                                    } 
                              } Αλλιώς {
                                    ΠιόνιΚιν(Θέσεις(.θέση_π).Χ(),Θέσεις(.θέση_π).Υ(), Θέσεις(.νέα_θέση).Χ(),Θέσεις(.νέα_θέση).Υ(),κιν, .νο)
                                    εξ=Ψευδές
                                    Αν κιν=4 Τότε .μετακίνηση
                              }
                        }            
                  }
                  Αν ΣειράΝικητών(ι)>0 Τότε ΛεζάνταΣτοΠλαίσιο(θχ+χ,θυ*.4, θυ,Χ.σημεία, κ, ι+1, μορφή$("{0}",ΣειράΝικητών(ι)))
            }
            Αν εκτός>=0 Τότε {
                  ΛεζάνταΣτοΠλαίσιο(0, θυ*.4,θυ,θχ ,κ,εκτός, λεζ$)
            }
            Αναμονή 3
            Ανανέωση 5000
            Αν εξ Τότε Έξοδος
      }
Τέλος Ρουτίνας
Ρουτίνα Στοίχισε(&εικόνα$, &χχ, &υυ, &μ_χ, &μ_υ)
      Τοπική αναλογία_εικόνας
      αναλογία_εικόνας=Εικόνα.Χ.Σημεία(εικόνα$)/Εικόνα.Υ.Σημεία(εικόνα$)
      χχ=Χ.σημεία*.7
      υυ=Υ.σημεία*.7
      Αν χχ>αναλογία_εικόνας*υυ Τότε {χχ=αναλογία_εικόνας*υυ} Αλλιώς υυ=χχ/αναλογία_εικόνας
      μ_χ=(Χ.σημεια-χχ) Δια 2
      μ_υ=(Υ.σημεια-υυ) Δια 2
Τέλος Ρουτίνας
Ρουτίνα ΠιόνιΔείξε(χ1, υ1, νο)
      Θέση ΜετΧ(χ1,νο-1),ΜετΥ(4-υ1)
      βήμα χ/120, υ*3/44
      Πάχος 3 { Πένα 0 { Κύκλος Γέμισμα Χρ(νο), υ*3/44,3 } }
Τέλος Ρουτίνας
Ρουτίνα ΠιόνιΚιν(χ1, υ1, χ2,υ2, κιν, νο)   
      Θέση ΜετΧ(χ1,νο-1)-κιν*(ΜετΧ(χ1,νο-1)-ΜετΧ(χ2,νο-1))/4,ΜετΥ(4-υ1)-κιν*(ΜετΥ(4-υ1)-ΜετΥ(4-υ2))/4
      βήμα χ/120, υ*3/44
      Πάχος 3 { Πένα 0 { Κύκλος Γέμισμα Χρ(νο), υ*3/44,3 } }
Τέλος Ρουτίνας
Ρουτίνα Βάλε_Τίτλο(τ$, χ1, μυ, υ2)
      Αν Ταύτιση("Α") Τότε { Διάβασε Τοπικά χ2 } Αλλιώς χ2=χ.σημειά
      Τοπική μ,μχ
      μ=μυ/30*ύψος.σημείου/15
      μχ=(χ2-χ1-Μέγεθος.χ(τ$, "Arial Black",μ)) Δια 2
      Αν μχ<0 Τότε  {
            μ=μεγαλο.σειράς(μ/2,6)
            μχ=(χ2-χ1-Μέγεθος.χ(τ$, "Arial Black",μ)) Δια 2
      }
      θέση μχ+χ1, υ2
      Επιγραφή τ$, "Arial Black",μ
Τέλος Ρουτίνας
Ρουτίνα ΠιόνιΣτοΠλαίσιο(χ1, μυ, υ2, χ2, ν, νο)
      Τοπική μ,μχ
      μχ=(χ2-χ1)/6
    Θέση χ1+μχ+χ/30, υ2+μυ+(υ-μυ*2)*(νο-.5)/4
    Πάχος 3 { Πένα 0 { Κύκλος Γέμισμα χρ(νο), υ*3/44,3 } }
Τέλος Ρουτίνας
Ρουτίνα ΛεζάνταΣτοΠλαίσιο(χ1, μυ, υ2, χ2, ν, νο, Λ$)
      Τοπική μ,μχ
      μχ=(χ2-χ1)/6
      Βάλε_Τίτλο(Λ$,χ1, μυ*2,υ2+(υ-μυ*2)*(νο-.5)/4, χ2) 
Τέλος Ρουτίνας
Ρουτίνα ΠλαίσιοΠαικτών(χ1, μυ, υ2, χ2, ν)
      Τοπική μ,μχ
      μχ=(χ2-χ1)/6
      Θέση χ1+μχ, υ2+μυ
      Πάχος 2 {
            Χρώμα 3 {
                  Βάψε μχ*4, υ-μυ*2
            }
      }
Τέλος Ρουτίνας


Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου

You can feel free to write any suggestion, or idea on the subject.