Πέμπτη 31 Μαρτίου 2016

Αναθεώρηση 198 - Και παιχνίδι τύπου Pong

Διόρθωσα το H (δούλευε ως OR αλλά από μια αλλαγή που έκανα για βελτιστοποίηση..το είχα χαλάσει..ένα 1 είχε γίνει 2...)



Το παιχνίδι παίζεται με ένα άτομο. Σκοπός είναι να περάσει ο παίκτης 10 μπαλιές ανάμεσα στην τρύπα από την αριστερή "ρακέτα". Αυτή η τρύπα μετακινείται! Επίσης πρέπει να αποφύγει να ρίξει την μπάλα με γωνία τέτοια που να μην μπορεί να την χτυπήσει (η ρακέτα του παίκτη δεν πάει πολύ ψηλά, ούτε πολύ χαμηλά). Θέλει εξάσκηση, και συγκέντρωση για να κερδίσει κανείς.
Το παιχνίδι παίζεται σε πλήρη οθόνη (μάλιστα γράφουμε στο περιθώριο, τη κύρια οθόνη την έχουμε περιορίσει, είναι το μήνυμα που βλέπουμε στην παύση). Αν πατήσει κανείς το Escape και βγει στην μικρή οθόνη στο μέσον, με Φόρμα 60,30 επανέρχεται μια μεγάλη οθόνη για αν δουλέψουμε τον διορθωτή καλύτερα).


\\ Πρόγραμμα Μοναχός - Παιχνίδι τύπου Pong
γραμματοσειρά "Tahoma"
Σβήσε
Τύπος 18, 8000,2400
Κίνηση Κέντρο
Τμήμα Χτύπος {
              Φωνή 2, 100,"g"
              Παίξε 2, 127
}
Διαμέσου Συναρτήσεις
Περιθώριο 12 { 
Ανανέωση 5000
Πίνακας Ψ$()
Ψ$()=Αρ$()
Οθόνη 5,0
Πένα 14
Ανανέωση 50
α$=""
β$=""
β1$=""
Θέση 0,0
Βάψε 300,Υ.σημεία, 15
θέση 0,0
Αντέγραψε 300,300 στο α$
Αντέγραψε 300,1800 στο β$
Αντέγραψε 300,Υ.σημεία στο β1$
Πάλι:
Δείκτη.Μορφή Κρύψε
οθόνη #222222,0
Τύπωσε @(5,5),
Πένα 7 {
      Αναφορά {Παιχνίδι Μοναχός
            Πάτησε P/Π για παύση
            Πάτησε διάστημα...
            ...για τερματισμό
            }
      }
Για ι=0 έως Υ.σημεία ανά ύψος.σημείου*2 { Θέση 0,ι : Χάραξε Χ.σημεία, 0, #555555 }
χκ=αΚ(χ.σημεία/2-150)
χκ1=χκ-300*7
χκ2=χκ+900
χα2=1000
χα1=400
χδ1=χ.σημεία-1000
χδ2=χδ1+600
Για ι=0 έως Υ.σημεια-300 ανά 600 { Αντέγραψε χκ, ι με α$ }
Σκορ1=0
Σκορ2=0
Αντέγραψε χκ1, 900 με ψ$(Σκορ1)
Αντέγραψε χκ2, 900 με ψ$(Σκορ2)
Υα=-900
Υα1=Υα-Υ.σημεία/4
Υα2=Υα1+Υ.σημεία/2
Υβ=Υ.σημεία+900
Υαβ=30
Παίκτης 1, 850,Υα  Με β1$
Παίκτης 2, χδ1,10000  Με β$
Παίκτης 3,  850,Υβ  Με β1$
Υ2=Υ.Σημεια-900-1000
Χμ=Χκ
Υμ=3000+τυχαίος(2,5)*300
Παίκτης 4, Χμ,Υμ  Με α$
Για ι=1 εως 4 { Παίκτης ι Δείξε }
Υ3=Υ.Σημεία-300
Χ3=Χ.Σημεία-300
Υ4=Υ.Σημεία/2
Τχ=120
Τμ=120
Υπ=Δείκτης.Υ
Υ=ΥΠ
Νήμα {
      Υπ=Υ : Υ=Δείκτης.Υ
} ως Νμ κάθε 25
Αναμονή 100
Νήμα {
      Χμ+=Τχ
      Υμ+=Τμ
      Αν Υ<1900 τότε { Υ=1900: Υπ=1900   } αλλιώς.αν Υ>Υ2 τότε Υ=Υ2: Υπ=Υ2
      Αν Υμ<300 τότε { Τμ-! : Υμ+=Τμ  } αλλιώς.αν Υμ>Υ3 τότε Τμ-! : Υμ+=Τμ
      Αν σύγκρουση(4, 100, χα1,Υα-Υ4, χα2, Υα+Υ4) τότε {
            Τχ-! : Χμ+=Τχ*2 
            Χτύπος
       } αλλιώς.αν σύγκρουση(4, 100, χα1,Υβ-Υ4, χα2, Υβ+Υ4) τότε {     
            Τχ-! : Χμ+=Τχ*2
            Χτύπος
       } αλλιώς.αν σύγκρουση(4, 100, χδ1,Υ-900, χδ2, Υ+900) τότε {
       Τχ=-Απολ(Τχ) : Χμ+=Τχ*2
       Τχ=μικρό.σειράς(-ακ(Λογ(Απολ(Υ-Υπ)+2))*90, Τχ/2, -120) 
       Τμ=Σημ(Τμ)*Απολ(Ακ((Υμ-Υ)/10))+Σημ(Τμ)*60
       Χτύπος
      }
      Σημ 1 : δρομέας 0,ύψος-1 : Τύπωσε πάνω $(,8),Χμ, Υμ , Απολ(Υ-Υπ), Τχ, Τμ
      Παίκτης 2,,Υ
      Παίκτης 4, Χμ,Υμ     
} ως Μπ κάθε 10
Νήμα {
Πένα 7 {
      δρομέας 0,0 : Τύπωσε μέρος $(6,8),@(πλάτος -7), ~(Πένα,#555555),Γραφή$(Τώρα,"hh:mm:ss")
}
} ως Ττ κάθε 1000
Ανανέωση 50
Κρ=Αληθές
τέρμα=Ψευδές
Κύριο.Έργο 100 {
      Αν Κρ Τότε {
      Υα+=Υαβ
      Υβ+=Υαβ
      Αν Υα>Υα2 Τότε { Υαβ-! } Αλλιώς.Αν Υα<Υα1 τότε Υαβ-!
      Παίκτης 1,,Υα
      Παίκτης 3,,Υβ
      Σημ 2 : δρομέας 0,ύψος-1 : Τύπωσε πάνω $(,8), Υα, Υβ
      }
      Αν χμ>Χ3  ή χμ<1000 τότε {
      Αν χμ>Χ3 τότε {
      Σκορ1++
      Αντέγραψε χκ1, 900 με ψ$(Σκορ1)
      } αλλιώς {
      Σκορ2++
      Αντέγραψε χκ2, 900 με ψ$(Σκορ2)
      }
      Αν Σκορ1=10 ή Σκορ2=10 τότε διέκοψε
            Χμ=Χκ
            Υμ=3000+τυχαίος(2,5)*300
            Τχ=120
            Τμ=120*Σημ(Τμ)
            Αν τυχαίος(2)=1 τότε Τχ-!
      }
      Επίλεξε με Ενκομ$
      Με "π","p","Π","P"
            {
                  Αν Κρ τότε { 
                        Νήμα Μπ Κράτα
                        Επίπεδο {
                              Οθόνη 0, 0
                              Πένα 15 {
                                    Δρομέας 0, ύψος/2-1
                                    Τύπωσε Πάνω $(6),"Πάτα το πλήκτρο P ή Π για συνέχεια.."
                                    Τύπωσε Υπό
                                    Τύπωσε Πάνω $(6)," ή διάστημα για να τερματίσω"
                              }
                              Άναψε
                        }
                  } Αλλιώς {
                  Επίπεδο {
                        Σβήσε
                        Οθόνη 5
                  }
                  Νήμα Μπ ξεκίνα
                  }
                  Κρ~
            }
      Με " "
            {
                  Νήμα Μπ Κράτα   
                  Δείκτη.Μορφή Δείξε                  
                  αν Ρώτα("Θα να σταματήσεις","Μοναχός","Ναι","Όχι")=1 τότε { 
                        Τέρμα=Αληθές
                  } Αλλιώς  Δείκτη.Μορφή Κρύψε                  
                  Νήμα Μπ ξεκίνα
            }
      Τέλος Επιλογής
      Αν τέρμα τότε έξοδος
}
Αν κρ Αλλιώς { Επίπεδο {Σβήσε : Οθόνη 5} : κρ~ }
Αν Ρώτα("Θα ξαναπαίξουμε","Μοναχός","Ναι","Όχι")=1 τότε προς Πάλι
Παίκτης 0
Οθόνη 5
}
Φόρμα 60,30
Άναψε
Τέλος
Συναρτήσεις:
Συνάρτηση Αρ$ {
Χ=0
Υ=0
Μηδέν$={_***_
                  *___*
                  *___*
                  *___*
                  *___*
                  *___*
                  _***_
                  }
Ένα$={__*__
                  _**__
                  *_*__
                  __*__
                  __*__
                  __*__
                  *****
                  }
Δύο$={_***_
                  *___*
                  ____*
                  _***_
                  *____
                  *____
                  *****
                  }
Τρία$={_***_
                  *___*
                  ____*
                  __**_
                  ____*
                  *___*
                  _***_
                  }
Τέσσερα$={___*_
                  __**_
                  _*_*_
                  *__*_
                  *****
                  ___*_
                  ___*_
                  }
Πέντε$={*****
                  *____
                  ****_
                  ____*
                  ____*
                  *___*
                  _***_
                  }
Έξι$={_***_
                  *___*
                  *____
                  ****_
                  *___*
                  *___*
                  _***_
                  }
Επτά$={*****
                  ____*
                  ___*_
                  __*__
                  __*__
                  __*__
                  __*__
                  }
Οκτώ$={_***_
                  *___*
                  *___*
                  _***_
                  *___*
                  *___*
                  _***_
                  } 
Εννιά$={_***_
                  *___*
                  *___*
                  _****
                  ____*
                  *___*
                  _***_
                  } 
Δέκα$={*__*_
                  *_*_*
                  *_*_*
                  *_*_*
                  *_*_*
                  *_*_*
                  *__*_
                  }   
Πίνακας Ψ$(11), Ψ1$(11)
Πλ1=300
Ύψ1=300
Ψ$(0)=Μηδέν$,Ένα$, Δύο$, Τρία$, Τέσσερα$,Πέντε$, Έξι$, Επτά$, Οκτώ$, Εννιά$, Δέκα$
      Για Ψ=0 έως 10 {
      οθόνη #222222,0
      Για ι=0 έως 7*Ύψ1 ανά ύψος.σημείου*2 {
      Θέση 0,ι
      Χάραξε Χ.σημεία, 0, #555555
      }
      Θ=1
      Θέση Χ,Υ
      Για Κ=0 έως 7 {
            Για Ι=0 έως 4 {
                       Αν Μεσ$(Ψ$(Ψ),Θ,1)="*" τότε { Βάψε Πλ1, Ύψ1,15 }  Αλλιώς Βήμα Πλ1, Ύψ1 'Αλλιώς Βάψε Πλ1, Ύψ1, #222222
                       βημα 0, -Ύψ1
                  Θ++
            }
            Βήμα -5*Πλ1, Ύψ1
            Θ+=2
      }
      Α$=""
      Θέση Χ,Υ
      Αντίγραψε Πλ1*5,Ύψ1*7 στο Α$
      Ψ1$(Ψ)=Α$
      }
=Ψ1$()
}
Επιστροφή











Κατέβασε το αρχείο gsb εδώ:
Περιστρεφόμενη μπίλια και αλλαγή μεγέθους!



Εικόνα από υπολογιστή με Windows 7 (τα παραπάνω είναι από Virtual Box) 1440Χ900


 

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

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

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