Daily Programming Thread

Συζητήσεις για γλώσσες προγραμματισμού και θέματα σχετικά με προγραμματισμό.
Post Reply
User avatar
LexTalionis
bit level
bit level
Posts: 30
Joined: Tue Dec 03, 2013 9:03 pm

Daily Programming Thread

Post by LexTalionis » Tue Dec 03, 2013 9:49 pm

Λοιπόν,στόχος του thread :
Να μείνει alive και πάντα να βρίσκεται στα new posts :-)

Τι συζητάμε ; Project με τα οποία ασχολούμαστε,θέλουμε να ασχοληθούμε,κομμάτια κώδικα που μας μπέρδεψαν/μας έφαγαν χρόνο για χαζομάρα,ερωτήσεις σχετικά με προγραμματισμό , πράγματα που ανακαλύψαμε , απορίες κτλπ . Ίσως κάποιοι να θέλουν να ασχοληθούν περισσότερο με προγραμματισμό,αλλά να μην μπορούν να βρουν κάποια ωραία ιδέα , οπότε θα μπορούσαν να ρωτήσουν εδώ για ιδέες :)

Επίσης δεν θέλω κάποιος να φοβηθεί επειδή ίσως να ναι newb . Όλοι είμαστε/ήμασταν ,και αυτό εδώ μπορεί να μας βοηθήσει να ξεφύγουμε πιο γρήγορα και εύκολα από την "newbίστικη" κατάσταση μας .

Και αφού είπα λίγα σχετικά με το πως σκέφτομαι εγώ το thread,ήρθε η ώρα να μιλήσω πρώτος .
Η πιο κοντινή βλακεία που έκανα ,ήταν στο git να θέτω global.mail = kati@mail.com αντί για global.email = kati@mail.com . Μου κόστισε κοντά στις 3 ώρες να καταλάβω γιατί δεν μου εμφάνιζε στα commits του github το profile μου .
Εγώ στο κοντινό μέλλον(εντός 1-2 εβδομάδων) σκέφτομαι να φτιάξω custom ui σε android για ένα chat app . Ουσιαστικά θα μοιαζει πάρα πολύ με το ui που χει τώρα το facebook chat .

Στο μακρινό μέλλον θέλω να φτιάξω botaki για mmorpg . Ουσιαστικά σαν aimbot θα ναι ,και αν τελειώσει το project αυτό και φαρμάρει μηχανικά, ίσως να του φτιάξω ai για να κάνει περισσότερα πράγματα . :-D
No luv ?
User avatar
Funk
Venus Former Team Member
Posts: 1834
Joined: Wed Oct 06, 2010 10:29 pm
Gender:
Location: Korriban

Re: Daily Programming Thread

Post by Funk » Tue Dec 03, 2013 10:02 pm

Δεν είναι τόσο programming, αλλά σήμερα χάλασα και ξαναέστησα 3 φορές το wordpress μέχρι να καταλάβω πως μπορώ να αλλάξω τα permalinks.
Το όνομα του site είναι "Α noob's website" ...oh well...
Educate yourself. In time· share what you have learned.
shrinked imageshrinked image
User avatar
Spongebobu
Mbyte level
Mbyte level
Posts: 702
Joined: Mon Jul 02, 2012 6:54 pm
Academic status: Alumnus/a
Gender:
Location: In yo house

Re: Daily Programming Thread

Post by Spongebobu » Tue Dec 03, 2013 11:22 pm

Ωραίο thread και μακάρι να συμμετάσχουν περισσότεροι (φοιτητές Πληροφορικής δεν είμαστε?).

On topic:
Επειδή τώρα τελευταία ασχολούμαι με functional programming και συγκεκριμένα με clojure, για πείτε την γνώμη σας κατα πόσο πιστεύετε αξίζει ο συναρτησιακός προγραμματισμός και αν σας έχει βοηθήσει πουθενά. Προσωπικά πιστεύω βοηθάει πολύ στο scalability και την καλύτερη σύνταξη προγραμμάτων και πολλές τεχνικές μπορούν να μεταφερθούν και σε OO/procedural γλώσσες (π.χ. immutability). Το κακό είναι οτι για πολλούς είναι "ξένη" μεθοδολογία και δεν βλέπουν το νόημα να εκφράζουν τα προγράμματα τους ως μαθηματική φόρμουλα, στο οποίο ως ενα βαθμό συμφωνώ.

Also, αν τον ενδιαφέρει κάποιον μπορούμε να κάνουμε κανένα code golf challenge. :-D
Every time you make a typo the errorists win.
Fabio 2 - 1 Funk
michalis
Gbyte level
Gbyte level
Posts: 1061
Joined: Mon Dec 12, 2011 8:42 pm
Academic status: Alumnus/a
Gender:

Re: Daily Programming Thread

Post by michalis » Tue Dec 03, 2013 11:58 pm

(please delete)
Last edited by michalis on Fri Dec 06, 2013 1:00 pm, edited 1 time in total.
User avatar
Anemos
byte level
byte level
Posts: 75
Joined: Tue Aug 30, 2011 4:22 pm
Gender:

Re: Daily Programming Thread

Post by Anemos » Wed Dec 04, 2013 1:29 am

Spongebobu wrote:Ωραίο thread και μακάρι να συμμετάσχουν περισσότεροι (φοιτητές Πληροφορικής δεν είμαστε?).

On topic:
Επειδή τώρα τελευταία ασχολούμαι με functional programming και συγκεκριμένα με clojure, για πείτε την γνώμη σας κατα πόσο πιστεύετε αξίζει ο συναρτησιακός προγραμματισμός και αν σας έχει βοηθήσει πουθενά. Προσωπικά πιστεύω βοηθάει πολύ στο scalability και την καλύτερη σύνταξη προγραμμάτων και πολλές τεχνικές μπορούν να μεταφερθούν και σε OO/procedural γλώσσες (π.χ. immutability). Το κακό είναι οτι για πολλούς είναι "ξένη" μεθοδολογία και δεν βλέπουν το νόημα να εκφράζουν τα προγράμματα τους ως μαθηματική φόρμουλα, στο οποίο ως ενα βαθμό συμφωνώ.

Also, αν τον ενδιαφέρει κάποιον μπορούμε να κάνουμε κανένα code golf challenge. :-D
Νομίζω ότι αξίζει. Πλέον όλες οι σύγχρονες γλώσσες έχουν αποκτήσει χαρακτηριστικά συναρτησιακών γλωσσών προγραμματισμού. Για παράδειγμα, όλες οι γλώσσες (βλ. C#, Ruby, Python, C++11, σε λίγο καιρό ΚΑΙ η Java) υποστηρίζουν lambda expressions, ένας μηχανισμός ο οποίος υλοποιήθηκε αρχικά στη Lisp και προήλθε από τον λ-λογισμό και τα μαθηματικά. Και φυσικά δεν είναι μόνο αυτό. Immutability, lazy evaluation, currying, closures...... Άσε που τα τελευταία χρόνια όλο και περισσότερες γλώσσες δημιουργούνται που τρέχουν στη JVM και εννοείται πως έχουν full access σε ολες τις βιβλιοθήκες της Java. Φαίνεται πως υπάρχει μία τάση σύγκλισης declarative και imperative style.

Συνιστώ σε όποιον τον ενδιαφέρουν αυτά να πάρει υπολογισιμότητα (όταν ξαναγίνει). Είναι εντυπωσιακό το πόσα στοιχεία έχουν δανειστεί οι συναρτησιακές γλώσσες από εκεί. Έτσι κι αλλιώς δε νομίζω ότι είναι τυχαίο το ότι η υπολογισιμότητα είναι περισσότερο γνωστή ως θεωρία αναδρομικών συναρτήσεων.

Τον τελευταίο καιρό, όταν έχω λίγο χρόνο ξεφυλλίζω το Real World Haskell.
User avatar
X-ray
Mbyte level
Mbyte level
Posts: 854
Joined: Tue Aug 29, 2006 2:09 pm
Academic status: Alumnus/a
Gender:
Contact:

Re: Daily Programming Thread

Post by X-ray » Wed Dec 04, 2013 10:05 am

Εγώ τον τελευταίο καιρό ασχολούμαι με Drupal / PHP / mySQL.
Μια χαρά μου φαίνεται so far, αν και η μετάβαση από .NET / C# / Oracle ήταν κάπως σκληρή :razz:
Ασχολείται κανένας άλλος με drupal;
shrinked image
User avatar
ja_the_invincible
Wow! Terabyte level
Wow! Terabyte level
Posts: 2414
Joined: Tue Dec 01, 2009 12:33 am
Academic status: N>4
Gender:
Location: Κάπου στο matrix...

Re: Daily Programming Thread

Post by ja_the_invincible » Wed Dec 04, 2013 10:11 am

Python κυρίως πάνω σε flask με βάση mongodb και background task running με celery.Πολλές πολλές δυνατότητες και πιστεύω θα τα δούμε πιο πολύ στο μέλλον.Θα πρότεινα όποιος ασχολείται με web να τα κοιτάξει σαν κάτι εναλλακτικό που αποκτά πολύ hype τελευταία.
f**k robin and batman i'm robbin with a bat man
User avatar
ThOdOr1s
Mbyte level
Mbyte level
Posts: 964
Joined: Thu Oct 25, 2012 5:17 pm
Academic status: Alumnus/a
Gender:
Location: 36.86588,25.51602

Re: Daily Programming Thread

Post by ThOdOr1s » Wed Dec 04, 2013 1:49 pm

Εγω χθες αργα το βραδυ καθησα και διαβασα αυτο.

Δεν εγραψα κωδικα, αυτο θα γινει μετα το μπουγιο εργασιων που εχουμε τωρα. Αλλα κατι καταλαβα τουλαχιστον... Δεν ειναι τοσο τραγικα τα πραγματα οσο τα περιγραφει ο moodie... :smt005
Elementary OS
User avatar
m4ver1ck
Kilobyte level
Kilobyte level
Posts: 295
Joined: Fri Apr 01, 2011 4:31 pm
Gender:

Re: Daily Programming Thread

Post by m4ver1ck » Thu Dec 05, 2013 11:47 am

Λοιπόν η φάση έχει ως εξής:

Ξαδελφός μου, πιτσιρικάς (μόλις μπήκε στο γυμνάσιο), με τραβολογάει να του μάθω προγραμματισμό. Το ζήτημα είναι το εξής: Σε ποια γλώσσα να του δείξω, μιας και αμφιταλαντεύομαι μεταξύ python και java, με την πλάστιγγα να γέρνει πιο πολύ προς την πρώτη κυρίως λόγω της απλότητας του συντακτικού της και αφου μιλάμε για πιτσιρίκι, δεν θα γλαρώσει τόσο εύκολα. Αλλά από την άλλη δεν θα μπορεί να εξοικιωθει με βασικές έννοιες προγραμματισμού και θα αποκτήσει κακές συνήθειες στο "γράψιμο".

Εσείς τι θα διαλέγατε σε μια τέτοια περίπτωση?
Kommt Zeit, kommt Rat, kommt Attentat!
User avatar
ja_the_invincible
Wow! Terabyte level
Wow! Terabyte level
Posts: 2414
Joined: Tue Dec 01, 2009 12:33 am
Academic status: N>4
Gender:
Location: Κάπου στο matrix...

Re: Daily Programming Thread

Post by ja_the_invincible » Thu Dec 05, 2013 11:55 am

Αν και εξελίσσομαι σε fan της python δεν θα την πρότεινα για πρώτη γλώσσα.Κατά την γνώμη μου καλύτερα κάποιος όταν ξεκινάει προγραμματισμό να ασχοληθεί με type strict γλώσσες, να καταλάβει πώς δουλεύει αυτό το πράγμα στην μνήμη , να μάθει πώς δουλεύουν οι pointers, κλπ.Η python παρέχει πολλές ευκολίες σίγουρα για ένα developer που έχει κάνει c/c++/java ωστόσο για ένα πρωτάρη σκιπάρει πολύ βασικά πράγματα τα οποία είναι ανορθόδοξο να τα καλύψει μετά.Καλύτερα java & στην αρχή το concept να είναι functional και μόνο.Ακόμα καλύτερα c/c++.
f**k robin and batman i'm robbin with a bat man
User avatar
cypher
Venus Former Team Member
Posts: 6207
Joined: Mon Sep 29, 2008 9:12 pm
Academic status: Alumnus/a
Gender:

Re: Daily Programming Thread

Post by cypher » Thu Dec 05, 2013 11:57 am

Κατ'εμε C με πολύ βασικά παραδείγματα και μικρά προβληματάκια που θα λύvει. Το http://www.mgiurdas.gr/book-209.aspx εχει ενα σωρό εύκολα παραδειγματάκια/ασκήσεις και έχει και cd με κώδικα για να τσεκάρει. Θα πάρει ίσως 1-2 εβδομάδες παραπάνω διάβασμα αλλα αξίζει. Python είναι υπεραπλουστευμένη και δεν θα είναι αρκετά challenging, και η java έχει αρκετές ιδιαιτερότητες και libs που θα τον κουράζουν και δεν θα έχουν σχέση με τα προβληματακια που θα πρέπει να λύσει (π.χ. συνεχή conversions ανάμεσα σε data types).
ImageImageImageImageImageImageImage
User avatar
nachos
Gbyte level
Gbyte level
Posts: 1252
Joined: Mon Aug 21, 2006 4:28 pm
Academic status: Alumnus/a
Gender:
Location: Brachamee City

Re: Daily Programming Thread

Post by nachos » Thu Dec 05, 2013 2:50 pm

Θα σου πρότεινα να παίξεις με Visual Basic .NEΤ. Είναι ψηλά-χαμηλά το ίδιο πράμα με Java, αλλά έχει το εξής καλό: εκτός από κλάσεις, μπορείς να γράφεις και modules (όπου όλα τα methods είναι εξ' ορισμού static, οπότε δεν μπλέκεις με το να εξηγείς εξαρχής τι είναι το static κλπ). Επίσης, το συντακτικό της VB αν και λίγο φλύαρο, θεωρώ ότι βοηθάει εξαιρετικά στην εκμάθηση ένα πρωτάρη. Σκέψου ότι πρακτικά η ψευδογλώσσα που κάναμε στο λύκειο, ήταν VB 6 μεταφρασμένη στα ελληνικά, με ελάχιστες παραλλαγές.

Δες ένα παράδειγμα με το κλασσικό hello world, όπως θα το έγραφες με το καλημέρα σε visual studio 2010:

Code: Select all

Module Module1

    Sub Main()
        Console.WriteLine("Hello world!")
    End Sub

End Module
Nothing is impossible for the man who doesn't have to do it himself
User avatar
LexTalionis
bit level
bit level
Posts: 30
Joined: Tue Dec 03, 2013 9:03 pm

Re: Daily Programming Thread

Post by LexTalionis » Thu Dec 05, 2013 10:56 pm

Μιας και μόλις μπήκε γυμνάσιο,συμφωνώ με τον nachos ,καθώς θα θέλει άμεσα αποτελέσματα (και ui σχετικά γρήγορα), και επίσης θα βρει πιο χρήσιμα tutorials (δλδ να εξηγούν το παραμικρό ξανά και ξανά ) .
Με αυτό δεδομένο,στην σύγκριση visual studio vs python,διαλέγω python .

Βέβαια καλό θα ταν να άρχιζε από c,αλλά πραγματικά,εδώ συμφοιτητές μας δεν έχουν την υπομονή να την μάθουν,θα χε ένα παιδί 1ης γυμνασίου ;
No luv ?
User avatar
rexes
Kilobyte level
Kilobyte level
Posts: 397
Joined: Wed Sep 21, 2011 8:22 pm
Academic status: 3rd year
Gender:
Location: SomeWhere

Re: Daily Programming Thread

Post by rexes » Fri Dec 06, 2013 1:50 am

Πολυ ωραίο thread!

Ήθελα να ρωτήσω κάτι σχετικά με App Engine και γενικότερα τεχνολογίες Cloud της Google.

Έχει ασχοληθεί κανείς;; Εχω μια απορία πάνω σε Projects για το App Engine αν εχει ασχοληθει κανεις πολυ!
Εφαρμογή για το Πρόγραμμα του Οικονομικού Πανεπιστημίου Αθηνών
Image
Δείτε περισσότερα για την εφαρμογή και πείτε την άποψή σας!
User avatar
PatrickFTW
Mbyte level
Mbyte level
Posts: 625
Joined: Sat Oct 30, 2010 9:06 pm
Academic status: N>4
Gender:
Location: Somewhere

Re: Daily Programming Thread

Post by PatrickFTW » Fri Dec 06, 2013 12:48 pm

Παιδιά για να χρησιμοποιήσω το Android SDK πρέπει οπωσδήποτε να έχω Java 6 ή μπορώ και με με Java 7 ?
Oι άνθρωποι δεν πρέπει να φοβούνται τις κυβερνήσεις, οι κυβερνήσεις πρέπει να φοβούνται τους ανθρώπους...
User avatar
cypher
Venus Former Team Member
Posts: 6207
Joined: Mon Sep 29, 2008 9:12 pm
Academic status: Alumnus/a
Gender:

Re: Daily Programming Thread

Post by cypher » Fri Dec 06, 2013 12:56 pm

Με eclipse + adt δεν ειναι compatible οχι. Με android studio μπορείς να το ρυθμίσεις να παίζει απλά μερικά καινούργια features της γλώσσας δεν θα λειτουργουν. Δες εδώ http://stackoverflow.com/questions/7153 ... th-android
ImageImageImageImageImageImageImage
User avatar
nachos
Gbyte level
Gbyte level
Posts: 1252
Joined: Mon Aug 21, 2006 4:28 pm
Academic status: Alumnus/a
Gender:
Location: Brachamee City

Re: Daily Programming Thread

Post by nachos » Fri Dec 06, 2013 1:05 pm

cypher wrote:Με eclipse + adt δεν ειναι compatible οχι. Με android studio μπορείς να το ρυθμίσεις να παίζει απλά μερικά καινούργια features της γλώσσας δεν θα λειτουργουν. Δες εδώ http://stackoverflow.com/questions/7153 ... th-android
Νομίζω ότι μπορεί να παίξει με την έννοια ότι μπορείς να θέσεις το runtime compatibility σε 1.6. Οπότε αν έχεις ήδη εγκατεστημένo τo 1.7 να μη χρειάζεσαι installation του 1.6 sdk.
Nothing is impossible for the man who doesn't have to do it himself
001
Buffer underflow exception
Buffer underflow exception
Posts: 4
Joined: Wed Oct 16, 2013 4:13 pm

Re: Daily Programming Thread

Post by 001 » Sun Dec 08, 2013 2:27 am

Code: Select all

import java.awt.event.*;
import acm.program.*;
import acm.graphics.*;

public class mouse extends GraphicsProgram {
	public void run(){ 
		
		GRect rect=new GRect(getWidth()/2,getHeight()/2,100,80); 
		rect.setFilled(true);
		add (rect); 
		
		while(true){
			rect.move(dx,dy);
			pause(10);
		}
	}
	public void keyPressed(KeyEvent e) {
        int key = e.getKeyCode();

        if (key == KeyEvent.VK_LEFT) {
            dx = -1;
        }

        if (key == KeyEvent.VK_RIGHT) {       
            dx = 1;
        }

        if (key == KeyEvent.VK_UP) {        
            dy = -1;
        }

        if (key == KeyEvent.VK_DOWN) {
            dy = 1;
        }
	}
	private int dx;
	private int dy;
}
Μπορεί κάποιος να μου εξηγήσει τι κάνει αυτός ο κώδικας?
Προσπαθώ να καταλάβω πως να χρησιμοποιώ το πληκτρόλογιο ως ακροατή συμβάντων.
Ευχαριστώ :-)
User avatar
rexes
Kilobyte level
Kilobyte level
Posts: 397
Joined: Wed Sep 21, 2011 8:22 pm
Academic status: 3rd year
Gender:
Location: SomeWhere

Re: Daily Programming Thread

Post by rexes » Sun Dec 08, 2013 5:33 pm

001 wrote:

Code: Select all

import java.awt.event.*;
import acm.program.*;
import acm.graphics.*;

public class mouse extends GraphicsProgram {
	public void run(){ 
		
		GRect rect=new GRect(getWidth()/2,getHeight()/2,100,80); 
		rect.setFilled(true);
		add (rect); 
		
		while(true){
			rect.move(dx,dy);
			pause(10);
		}
	}
	public void keyPressed(KeyEvent e) {
        int key = e.getKeyCode();

        if (key == KeyEvent.VK_LEFT) {
            dx = -1;
        }

        if (key == KeyEvent.VK_RIGHT) {       
            dx = 1;
        }

        if (key == KeyEvent.VK_UP) {        
            dy = -1;
        }

        if (key == KeyEvent.VK_DOWN) {
            dy = 1;
        }
	}
	private int dx;
	private int dy;
}
Μπορεί κάποιος να μου εξηγήσει τι κάνει αυτός ο κώδικας?
Προσπαθώ να καταλάβω πως να χρησιμοποιώ το πληκτρόλογιο ως ακροατή συμβάντων.
Ευχαριστώ :-)
Την keyPressed δεν καταλαβαίνεις;
Εφαρμογή για το Πρόγραμμα του Οικονομικού Πανεπιστημίου Αθηνών
Image
Δείτε περισσότερα για την εφαρμογή και πείτε την άποψή σας!
User avatar
nachos
Gbyte level
Gbyte level
Posts: 1252
Joined: Mon Aug 21, 2006 4:28 pm
Academic status: Alumnus/a
Gender:
Location: Brachamee City

Re: Daily Programming Thread

Post by nachos » Sun Dec 08, 2013 5:50 pm

Μέσα στην run, κατασκευάζεται ένα ορθογώνιο σχήμα, και τοποθετείται μέσα στον καμβά της GraphicsProgram. Έπειτα, η άπειρη επανάληψη, προκαλεί σε κάθε βήμα μετακίνηση του ορθογωνίου κατά χ και ψ, ίση με τις ποσότητες dx και dy αντίστοιχα. Οι ποσότητες αυτές όπως παρατηρείς είναι δηλωμένες στην κλάση GraphicsProgram, και όταν ξεκινάει το πρόγραμμα είναι ίσες με 0 (άρα αρχικά το ορθογώνιο παραμένει ακίνητο).

Εδώ έρχεται να μπεί στο παιχνίδι η μέθοδος keyPressed. Για λόγους που δεν είναι επί της παρούσης να σου εξηγηθεί, η keyPressed έχει ιδιαίτερη ερμηνεία στην κλάση GraphicsProgram, και ουσιαστικά καλείται κάθε φορά που χρήστης θα πατήσει οποιοδήποτε πλήκτρο από το πληκτρολόγιο. Όπως παρατηρείς, στην πρώτη της γραμμη, ο κώδικας αναθέτει σε μια μεταβλητή τον κωδικό του πλήκτρου που πατήθηκε. Έπειτα, εξετάζει αν είναι κάποιο από τα τέσσερα βέλη του πληκτρολογίου (αριστερά, δεξιά, πάνω, κάτω), και ανά περίπτωση ενημερώνει την αντίστοιχη μεταβλητή μετατόπισης (dx, dy).

Με αυτόν τον τρόπο, αν ο χρήστης πατήσει ένα οποιοδήποτε βέλος, θα προκαλέσει (στην επόμενη επανάληψη) αντίστοιχη μετατόπιση στο ορθογώνιο. Παρατήρησε επίσης ότι με τον τρόπο που είναι γραμμένος ο κώδικας, αρκεί να πατήσει κανείς μια φορά μόνο ένα βέλος, και μετά το ορθογώνιο θα συνεχίσει να κινείται προς αυτή την κατεύθυνση, μέχρις ότου ο χρήστης να αποφασίσει να διατάξει να κινηθεί προς την αντίθετη.
Nothing is impossible for the man who doesn't have to do it himself
001
Buffer underflow exception
Buffer underflow exception
Posts: 4
Joined: Wed Oct 16, 2013 4:13 pm

Re: Daily Programming Thread

Post by 001 » Mon Dec 09, 2013 4:32 pm

001 wrote:
rexes wrote:
001 wrote:

Code: Select all

import java.awt.event.*;
import acm.program.*;
import acm.graphics.*;

public class mouse extends GraphicsProgram {
	public void run(){ 
		
		GRect rect=new GRect(getWidth()/2,getHeight()/2,100,80); 
		rect.setFilled(true);
		add (rect); 
		
		while(true){
			rect.move(dx,dy);
			pause(10);
		}
	}
	public void keyPressed(KeyEvent e) {
        int key = e.getKeyCode();

        if (key == KeyEvent.VK_LEFT) {
            dx = -1;
        }

        if (key == KeyEvent.VK_RIGHT) {       
            dx = 1;
        }

        if (key == KeyEvent.VK_UP) {        
            dy = -1;
        }

        if (key == KeyEvent.VK_DOWN) {
            dy = 1;
        }
	}
	private int dx;
	private int dy;
}
Μπορεί κάποιος να μου εξηγήσει τι κάνει αυτός ο κώδικας?
Προσπαθώ να καταλάβω πως να χρησιμοποιώ το πληκτρόλογιο ως ακροατή συμβάντων.
Ευχαριστώ :-)
Την keyPressed δεν καταλαβαίνεις;
Ναι.... :smt013
και βασικά γιατι δεν δουλεύει ο κώδικας ...
-------
nachos wrote:Μέσα στην run, κατασκευάζεται ένα ορθογώνιο σχήμα, και τοποθετείται μέσα στον καμβά της GraphicsProgram. Έπειτα, η άπειρη επανάληψη, προκαλεί σε κάθε βήμα μετακίνηση του ορθογωνίου κατά χ και ψ, ίση με τις ποσότητες dx και dy αντίστοιχα. Οι ποσότητες αυτές όπως παρατηρείς είναι δηλωμένες στην κλάση GraphicsProgram, και όταν ξεκινάει το πρόγραμμα είναι ίσες με 0 (άρα αρχικά το ορθογώνιο παραμένει ακίνητο).

Εδώ έρχεται να μπεί στο παιχνίδι η μέθοδος keyPressed. Για λόγους που δεν είναι επί της παρούσης να σου εξηγηθεί, η keyPressed έχει ιδιαίτερη ερμηνεία στην κλάση GraphicsProgram, και ουσιαστικά καλείται κάθε φορά που χρήστης θα πατήσει οποιοδήποτε πλήκτρο από το πληκτρολόγιο. Όπως παρατηρείς, στην πρώτη της γραμμη, ο κώδικας αναθέτει σε μια μεταβλητή τον κωδικό του πλήκτρου που πατήθηκε. Έπειτα, εξετάζει αν είναι κάποιο από τα τέσσερα βέλη του πληκτρολογίου (αριστερά, δεξιά, πάνω, κάτω), και ανά περίπτωση ενημερώνει την αντίστοιχη μεταβλητή μετατόπισης (dx, dy).

Με αυτόν τον τρόπο, αν ο χρήστης πατήσει ένα οποιοδήποτε βέλος, θα προκαλέσει (στην επόμενη επανάληψη) αντίστοιχη μετατόπιση στο ορθογώνιο. Παρατήρησε επίσης ότι με τον τρόπο που είναι γραμμένος ο κώδικας, αρκεί να πατήσει κανείς μια φορά μόνο ένα βέλος, και μετά το ορθογώνιο θα συνεχίσει να κινείται προς αυτή την κατεύθυνση, μέχρις ότου ο χρήστης να αποφασίσει να διατάξει να κινηθεί προς την αντίθετη.
1ον) Τον κώδικα τον έγραψα εγώ... αφού είδα τους κωδικούς απο τα βελάκια...
2ον) το keyPressed δεν καταλαβαίνω.
3ον) Συμφωνώ απόλυτα...οτι έτσι δουλεύει το πρόγραμμα,αλλά στην πράξη δεν τρέχει όταν πατάω βελάκι.Το object μένει ακίνητο.
4ον)Επειδή είναι η πρώτη μου επαφή με keyPressed είναι σίγουρα σωστά γραμμένος ο κώδικας?
5ον) Ευχαριστώ πολύ :)
Last edited by Funk on Mon Dec 09, 2013 4:50 pm, edited 1 time in total.
Reason: double post merged
User avatar
nachos
Gbyte level
Gbyte level
Posts: 1252
Joined: Mon Aug 21, 2006 4:28 pm
Academic status: Alumnus/a
Gender:
Location: Brachamee City

Re: Daily Programming Thread

Post by nachos » Mon Dec 09, 2013 4:47 pm

Α οκ, νόμιζα ότι ήταν sample κώδικας και ότι έπαιζε σωστά (άρα ότι υπήρχε και η κατάλληλη υποδομή για να παίξει).

EDIT:

Μόλις πρόσεξα αυτή τη μέθοδο:

Code: Select all

addKeyListeners()
Θα πρέπει να την καλέσεις στην run στον κώδικα που ήδη έχεις (πριν το άπειρο while), ώστε να καλείται καταληκτικά η keyPressed όταν πρέπει.
Nothing is impossible for the man who doesn't have to do it himself
Post Reply

Return to “Προγραμματισμός”