#!/bin/sh #Εμφάνηση μενού του προγράμματος echo "Welcome to a shell implement of Game of Life"

Σχετικά έγγραφα
Εκφώνηση άσκησης. Game of life. Το Παιχνίδι της Ζωής (The Game of Life).

Λειτουργικά. Συστήματα Ι. Φ ρ ο ν τ ι σ τ ή ρ ι ο. Αριστείδης Ηλίας. Εργαστήριο Ηλεκτρονικών Υπολογιστών

Εκφώνηση άσκησης. Η Κρεμάλα σαν παιχνίδι. Ανάλυση. Μέρος Α Αναφoρά, ανάλυση τακτικής. Υλοποίηση του παιχνιδιού «Κρεμάλα»

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ I

ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

Αβδέλαρου Κωνσταντίνα

Λειτουργικά Συστήματα

ΑΣΚΗΣΗ 2 -ΑΚΥΡΩΣΗ ΣΗΜΑΣΙΑΣ ΕΙΔΙΚΩΝ ΧΑΡΑΚΤΗΡΩΝ

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact:

Shell Scripts: loops / if / test

ΒΑΣΙΚΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΔΟΜΕΣ ΣΕ ΨΕΥΔΟΚΩΔΙΚΑ ΚΑΙ ΣΕ ΔΡΠ

Μερικές άλλες χρήσιμες εντολές

Εισαγωγή στους Η/Υ και τις Εφαρμογές Ενότητα 5: Επεξεργασία δεδομένων με τη γλώσσα προγραμματισμού python Υπο-ενότητα 5.2: Συμβολοσειρές-Έλεγχος Ροής

Εισαγωγή στον Προγραμματισμό

Ανάπτυξη και Σχεδίαση Λογισμικού

ΥΠΟΛΟΓΙΣΤΕΣ Ι. Τι χρειάζεται η εντολή IF ΕΝΤΟΛΗ IF. Παράδειγμα #1. Παράδειγμα #1

Λειτουργικά Συστήματα. Shell Programming

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / Γ ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 27/01/2013

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Πληρουορική Γ Γσμμασίοσ

4. Επιλογή και Επανάληψη

*? [xyz] [^xy] [!0-9] [:alpha:] [:digit:]

Δομές Ανακυκλώσεων. Εντολές ελέγχου - 1

Δομές ελέγχου ροής προγράμματος

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

Διάλεξη 1. Πράξεις Τελεστές Έλεγχος Ροής

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

Εργαστήριο Λειτουργικών Συστημάτων. Shell Programming

Προγραμματισμός Ι (ΗΥ120)

Work9 REMARKS script file MONAZYGA & MESOS OROS

ASPA: A translator from ASP to PHP

Ενότητα 3 ΕΙΣΑΓΩΓΗ ΣΤΗ ΓΛΩΣΣΑ PYTHON

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Μερικές άλλες χρήσιμες εντολές

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

4. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Α' μέρος: for)

C: Από τη Θεωρία στην Εφαρμογή

Λειτουργικά Συστήματα. Άσκηση Πράξη. Shell Programming

Γ7.5 Αλγόριθμοι Αναζήτησης. Γ Λυκείου Κατεύθυνσης

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact:

Αυτόνομοι Πράκτορες. Εργασία εξαμήνου. Value Iteration και Q- Learning για Peg Solitaire

Θέματα Προγραμματισμού Η/Υ

Κεφάλαιο 13: Φτιάχνοντας παιχνίδια

Εισαγωγή στα Λειτουργικά Συστήματα

Λύσεις για τις ασκήσεις του lab5

> μεγαλύτερο <= μικρότερο ή ίσο < μικρότερο == ισότητα >= μεγαλύτερο ή ίσο!= διαφορετικό

ΕΠΑΝΑΛΗΨΗ ΧΩΡΙΣ ΠΡΟΚΑΘΟΡΙΣΜΕΝΑ ΒΗΜΑΤΑ,ΜΕΤΡΗΤΕΣ,ΜΕΓΙΣΤΟΣ,ΜΕΓΙΣΤΟ ΟΝΟΜΑ Χαμηλόμισθος

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

wc -l <file1 10 ή να μετρήσω πόσες γραμμές δίνει μια οποιαδήποτε άλλη εντολή π.χ. η finger : finger wc -l 8

Οδηγίες Αγοράς Ηλεκτρονικού Βιβλίου Instructions for Buying an ebook

ΕΡΓΑΣΤΗΡΙΟ 11 - Απαντήσεις

Ενότητα: Δυαδική Αναζήτηση Σχέδιο Δραστηριότητας: Παιχνίδι: Βρες τον αριθμό

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13

Πως θα αποθηκεύσει τη λίστα με τα ψώνια του και θα την ανακτήσει στο Σ/Μ; και πως θα προσθέσει στη λίστα του επιπλέον προϊόντα;

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

Εισαγωγή στην Αριθμητική Ανάλυση

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ Η/Υ (ΟΜΑΔΑ ΘΕΜΑΤΩΝ A)

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΟ ΚΙΤ ΡΟΜΠΟΤΙΚΗΣ LEGO MINDSTORMS EV3

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Λογισµικό (Software SW) Γλώσσες

Σημειωματάριο Δευτέρας 9 Οκτ. 2017

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

Υπολογιστικά Συστήματα

Δομές Δεδομένων (Data Structures)

Διάλεξη 5η: Εντολές Επανάληψης

Λύσεις Σειράς Ασκήσεων 5

Σημειωματάριο Δευτέρας 20 Νοε. 2017

Ιδιοκτησία Αντικειµένου

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΟΛΑ ΤΑ SCRIPT files πρέπει να είναι ΕΚΤΕΛΕΣΙΜΑ: $*, : ΟΛΑ - Η λίστα (ο πίνακας) με τα ορίσματα $# πλήθος παραμέτρων. one two third parameter

for for for for( . */

Η Μέρα της Εβδομάδας. Πες Μου Πότε

ΔΙΑΔΙΚΑΣΤΙΚΟΣ ΠΡΟΓΡΑ Ρ Μ Α ΜΑΤΙ Τ ΣΜΟΣ

Φύλλο εργασίας 9 - Αυτόνομο ρομποτικό όχημα αποφυγής εμποδίων

Σημειωματάριο Τετάρτης 18 Οκτ. 2017

Δημιουργία Λογαριασμού Διαχείρισης Business Telephony Create a Management Account for Business Telephony

Η εντολή if-else. Η απλή μορφή της εντολής if είναι η ακόλουθη: if (συνθήκη) { Η γενική μορφή της εντολής ifelse. εντολή_1; εντολή_2;..

Άσκηση 1. Α. Υπολογίστε χωρίς να εκτελέσετε κώδικα FORTRAN τα παρακάτω: Ποιά είναι η τελική τιμή του Z στα παρακάτω κομμάτια κώδικα FORTRAN:

Δομημένος Προγραμματισμός (ΤΛ1006)

TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ

Εντολές Επανάληψης. int sum = 0, i=1; sum += i++ ; sum += i++ ; Η πράξη αυτή θα πρέπει να επαναληφθεί Ν φορές!

Mπαρμπούτι. Φύλλο Εργασίας. Τυχαιότητα

Τυχαίοι αριθμοί ρίξε μια «ζαριά»

Πληροφορική. Ενότητα 1: Α. Οργάνωση μαθήματος. Β. Στοιχεία Προγραμματισμού -Προγραμματιστικές Δομές, Πρόγραμμα, Γλώσσες.

ιαφάνειες παρουσίασης #5

IMPLICIT NONE INTEGER :: a, b, c

Προγραμματισμός Η/Υ (ΤΛ2007 )

Οδηγίες χρήσεως για τον ηλεκτρονικό συνδυασμό Selo-B της SECU

ΑΡΙΘΜΗΤΙΚΕΣ ΜΕΘΟΔΟΙ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

Εργαστηριακή Άσκηση 1

Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Συναρτήσεις στο CLIPS. Νίκος Βασιλειάδης, Αναπλ. Καθηγητής Τμήμα Πληροφορικής

Διάλεξη 9 Προγραμματισμός Κελύφους

Work12 REMARKS script file lab10 ask1-5 tabbing, ls2, urlparse, times, dates_correct

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

Δομές Δεδομένων & Αλγόριθμοι

Transcript:

#!/bin/sh #Εμφάνηση μενού του προγράμματος echo "Welcome to a shell implement of Game of Life" echo "Menu:" echo "1. Create your own game of life grid" echo "2. Implement a ready game of life grid from a le" echo "3. Exit" echo "Select by entering from 1 to 3" #Εκχώρηση της τιμής που λάβαμε απο το πληκτρολόγιο στην μεταβλητή choise read choise #Καθαρισμός οθόνης clear #Όσο η επιλογή του χρήστη είναι ορθή (1~3), εκτέλεσε while [ $choise -eq 1 -o $choise -eq 2 -o $choise -eq 3 ]; do #Αν η επιλογή ήταν 3, βγες if [ $choise -eq 3 ] ; then exit 1 #Αλλίως συνέχησε κανονικά το πρόγραμμα else #Δεύτερη επιλογή if [ $choise -eq 2 ] ; then #Διαβάζουμε την κεφαλίδα του pattern read size < pattern #Αποθηκεύουμε τα περιεχόμενα του pattern στον πίνακα grid grid=( `sed '1d' pattern tr -d '\n' sed -e 's/1/1 /g' -e 's/0/0 /g' ` ) #Υπολογίζουμε τον συνολικό αριθμό των κελιών let "totalsize =$size*$size" #Αντιγράφουμε τα περιεχόμενα του grid στον agrid agrid=(${grid[@]}) #Πρωτη επιλογή elif [ $choise -eq 1 ]; then echo "Entry dimension" read size echo "Entry per cent" read pers let "totalsize=$size*$size" let "cells=($totalsize*$pers*1/100)" cellcount=0 while [ $cellcount -lt $totalsize ]; do grid[$cellcount]=0 let "cellcount++"

cellcount=0 ran=$random RANGE=$totalsize let "ran %= $RANGE" while [ $cellcount -lt $cells ]; do grid[$ran]=1 ran=$random RANGE=$totalsize let "ran %= $RANGE" let "cellcount++" agrid=(${grid[@]}) acell=1 globalcounter=0 #Όσο υπάρχουν ζωντανά κελία στην απαράσταση; εκτέλεσε while [ $acell -gt 0 ]; do acell=0 counter=0 #Για κάθε κελί του πλέγματος while [ $counter -lt $totalsize]; do clear alive=0; #Υπολογίζουμε τις ακραίες θέσεις του πλέγματος let "beg=$counter%$size" let "last=($counter+1)%$size" #Αν το κελί είναι σε ακραία αριστερά θέση if [ $beg -eq 0 ]; then #Υπολόγισε τα γειτονικά κελιά του let "side=$counter+1" if [ ${grid[$side]} -eq 1 ]; then let "downmid=$counter-$size" let "downmidp=$counter-($size-1)" let "upmid=$counter+$size" let "upp=$counter+($size+1)" #Ελεγξε τα γειτονικά κελιά του, μονο αν αυτά είναι εντός των ορίων του πλέγματος if [ $downmid -ge 0 -a $downmidp -gt 0 ]; then if [ ${grid[$downmid]} -eq 1 ]; then

if [ ${grid[$downmidp]} -eq 1 ]; then if [ $upmid -lt $totalsize -a $upp -le $totalsize ]; then if [ ${grid[$upmid]} -eq 1 ]; then if [ ${grid[$upp]} -eq 1 ]; then #Αν το κελι βρίσκεται σε άκρο δεξιά του πλέγματος; τοτε elif [ $last -eq 0 ]; then #Υπολόγισε τις συντεταγμένες των γειτονικών κελιών let "side=$counter-1" if [ ${grid[$side]} -eq 1 ]; then let "downmid=$counter-$size" let "downmidp=$counter-($size+1)" let "upmid=$counter+$size" let "upp=$counter+($size-1)" #Ελεγξε τα γειτονικά κελιά μόνο, μόνο όταν είναι εντός των ορίων του πλέγματος if [ $downmid -gt 0 -a $downmidp -gt 0 ]; then if [ ${grid[$downmid]} -eq 1 ]; then if [ ${grid[$downmidp]} -eq 1 ]; then if [ $upmid -le $totalsize -a $upp -lt $totalsize ]; then if [ ${grid[$upmid]} -eq 1 ]; then if [ ${grid[$upp]} -eq 1 ]; then #Αλλιώς το κελί δεν βρίσκεται σε κάποιο άκρο του πλέγματος else

#Υπολόγισε τις συντεταγμένες των γειτονικών κελιών let "upmid=$counter+$size" let "upup=$counter+$size+1" let "updown=$counter+$size-1" let "downmid=$counter-$size" let "downup=$counter-$size+1" let "downdo=$counter-$size-1" let "up=$counter+1" let "down=$counter-1" if [ ${grid[$up]} -eq 1 ]; then if [ ${grid[$down]} -eq 1 ]; then #Έλεγξε τα γειτονικά κελιά μόνο όμως αν είναι εντός των ορίων του πλέγματος if [ $upup -le $totalsize ]; then if [ ${grid[$upmid]} -eq 1 ]; then if [ ${grid[$upup]} -eq 1 ]; then if [ ${grid[$updown]} -eq 1 ]; then if [ $downdo -ge 0 ]; then if [ ${grid[$downmid]} -eq 1 ]; then if [ ${grid[$downup]} -eq 1 ]; then if [ ${grid[$downdo]} -eq 1 ]; then #Εφαρμογή των 2 σύντομων κανόνων του παιχνιδιου της ζωής if [ ${grid[$counter]} -eq 1 ] ; then if [ $alive -eq 2 -o $alive -eq 3 ]; then let "agrid[$counter]=1" else let "agrid[$counter]=0"

else if [ $alive -eq 3 ] ; then let "agrid[$counter]=1" let "counter++" #αντιγραφή του πίνακα agrid πίσω στον grid grid=(${agrid[@]}) counter11=0 counter12=0 #Αναπαράσταση και του grid υπό την μορφή δισ-διάστατου πίνακα while [ $counter12 -lt $totalsize ] ; do while [ $counter11 -lt $size ]; do echo -n ${grid[$counter12]} if [ ${grid[$counter12]} -eq 1 ]; then let "acell++" let "counter11++" let "counter12++" counter11=0 echo echo "Live Cells:" $acell #Εμφάνηση κατάλληλου μυνήματος κάθε 5 αναπαραστάσης για συνεχιση ή τερματισμό αυτής if [ $globalcounter -eq 5 ]; then echo "Enter "c" to continue or "b" to break" read answer if [ $answer = "b" ]; then break globalcounter=0 let "globalcounter++" #Πάγωμα της οθόνης για 1 δευτερόλεπτο sleep 1 #Εμφάνηση του κυρίως μενού μετά την ολοκλήρωση της αναπαράστασης echo echo

echo "Welcome to a shell implement of Game of Life" echo "Menu:" echo "1. Create your own game of life grid" echo "2. Implement a ready game of life grid from a le" echo "3. Exit" echo "Select by entering from 1 to 3" read choise exit 0