គន្លឹះក្លាយជាអ្នក Programmer
ចង់ក្លាយជាអ្នកសរសេរកម្មវិធីគឺជាដំណើរនៃការកើនឡើងនៃអ្នកជំនាញបច្ចេកទេស និង ព័ត៌មានវិទ្យា ដែលជាតម្រូវការគ្រប់ស្ថាប័ន និងគ្រប់វិស័យដើម្បីអភិវឌ្ឈន៍ ឈានទៅ រកភាព ទំនើបកម្ម ។ ប៉ុន្តែការឈានទៅក្លាយជាអ្នកសរសេរកម្មវិធី មិនមែនប្រើពេល១ថ្ងៃ ១ខែ ឬមួយឆ្នាំនោះទេ ពោលគឺត្រូវការខិតខំប្រឹងប្រែងទាំងបញ្ញាស្មារតី ដាក់ចិត្តខំប្រឹងទើប បានសម្រេច។
1១- ដំបូងត្រូវយល់ពីមុខវិជ្ជាខាងក្រោមអោយច្បាស់សិន វាដូចជាកក្តវិទ្យាដែរ។
– Logic តក្កវិទ្យា
– Discrete mathematics គណិតវិទ្យា
២- យល់ដឹងពី គន្លឹះ Database ដូចជាការ Query, View និង Procedure ជាមួយ កម្មវិធីកញ្ចប់ Database :
– MS Access
– MS SQL
– DB V
– Fox Pro
– Paradox
– MySQL
៣- សម្រេចចិត្តធ្វើជាអ្នកសរសេកម្មវិធីប្រភេទណា?
– Web Programmer
– Desktop Programmer
– Operating System (OS) oriented programmer(tied to a single operating system or set of operating systems)
– Platform-independent programmer
– Distributed applications programmer
– Library/platform/framework/core programmer
– System programmer
– Kernel programmer
– Driver Programmer
– Compiler Programmer
– Programming Scientist
4- សិក្សារពីបច្ចេកទេស និង ភាសារដែលត្រូវនឹងជំរើសជំនាញរបស់យើង។
WEB PROGRAMMER
គឺជាអ្នកជំនាញសរសេរកម្មវិធី ឬ លើគេហទំព័រ ដែលវាត្រូវបានប្រព្រឹត្តឡើងបានតាមរយៈអ៊ីនធឺណែត និងដំណើរការលើ Browser(ដូចជា : Firefox, Internet Explorer, Chrome…)។
1ដូច្នេះយើងត្រូវយល់ពីបច្ចេកទេស និងភាសាស្តង់ដាដូចជា :
– HTTP
– FTP
– POP3
– SMTP
– TCP
– IP Protocol
– HTML, CSS, JS
– XML
– ASP
– PHP
– JSP
យល់ពី រចនាសម្ព័ន្ធនៃការគ្រប់គ្រងគេហទំព័រលើ Web Hosting
CPanel
Base Web services protocols (HTTP, FTP, SMTP, and POP3 or IMAP4)
Web server software
Email server and client software
យល់ពី Browse & Tool មួយចំនួនក្នុងការគ្រប់គ្រង Webpage :
– Web Development toolbar on website : ប្រើសម្រាប់មើលកូដដូចជា inspect element ដោយប្រើ F12 ឬ add on plugin ខាងក្រៅទៀត និង HTML & CSS checker ត្រួតពិតកំហុសនៃការសរសេ HTML & CSS ជាដើម។
– យល់ពីប្រភេទ Browser ដែលយើងដំណើរការកម្មវិធី
– ដឹងពីប្រភពនៃទិន្នន័យដែលយើងអាចយកទាញយកលើប្រើលើគេហំទព័រយើងបាន ដូចជាគេហទំព័រព័ត៌មាន, Wiki, blog, journals
– យល់ពី Social sites (social portals, bookmarking sites, note-taking sites)
– យល់ដឹងពីប្រព័ន្ធនៃគេហំព័ររបស់យើងដើម្បីអោយមានភាពជោគជ័យ
Posted in គន្លឹះ C/C++, C#, គន្លឹះកុំព្យូទ័រ |
ប្រវត្តិអ្នកបង្កើតភាសា C
Posted on by TEAV Chhun Nan (ទំនាក់ទំនង ផ្សាយពាណិជ្ជកម្ម 077778647-070778647)
Dinnis Ritchie ដែលមានឈ្មោះពេញជា Dennis MacAlistair Ritchie ឬត្រូវបានហៅថា dmr ដែលជាឈ្មោះហៅក្រៅ និង ជាឈ្មោះប្រើប្រាស់ក្នុង email address នៅកន្លែងធ្វើការរបស់គាត់ ។ Dennis Ritchie កើតនៅថ្ងៃទី៩ ខែកញ្ញា ១៩៤១ នៅ Bronxville ក្រុង New York គាត់បានទទួលបរិញ្ញាប័ត្រខាងរូបវិទ្យា និង គណិតវិទ្យា ពីសាកលវិទ្យាល័យ Harvard ។
Web IT2 copyចាប់ពីឆ្នាំ ១៩៦៧ គាត់បានបម្រើការងារនៅមជ្ឈមណ្ឌលស្រាវជ្រាវវិទ្យាសាស្រ្ដកុំព្យូទ័រក្នុងមន្ទីពិសោធន៍ដែលមានឈ្មោះថា Bell Labs ។
1Dennis Ritchie គឺជាអ្នកវិទ្យាសាស្រ្ដ ផ្នែកកុំព្យូទ័រដ៏កំពូលម្នាក់របស់ជនជាតិអាមេរិកាំង ។ នៅលើពិភពលោកបានទទួលស្គាល់ គាត់ថាជាអ្នកប្រាជ្ញបង្កើតភាសា C (កំឡុងឆ្នាំ១៩៧៨ ជាមួយលោក Brian Kernighan) ដែលជាភាសាសរសេរកម្មវិធីជាមូលដ្ឋាន មួយសម្រាប់កុំព្យូទ័រលើសពីនេះគាត់ក៏ជាអ្នកពូកែសម្រាប់ភាសាកម្មវិធី ផ្សេងៗទៀតព្រមទាំងប្រព័ន្ធប្រតិបត្តិការ UNIX និង Multics ផងដែរ ។
តួនាទី និង កិត្តិយស
Dennis MacAlistair Ritchie បានទទួលរង្វាន់ប្រចាំឆ្នាំពីសមាគមកុំព្យូទ័រ (Turing Award) ក្នុងឆ្នាំ១៩៨៣ ទៅលើការបង្រៀនទ្រឹស្ដីទាក់ទងទៅនឹង ”Reflections on Software Research” និងបង្កើតទ្រឹស្ដី GOS (Generic Operating System) ដែលអនុវត្តន៍ដោយប្រព័ន្ធប្រតិបត្តិការ UNIX ។ ឆ្នាំ ១៩៩៩ បានទទួលមេដាយថ្នាក់ជាតិផ្នែកបច្ចេកវិទ្យា របស់អាមេរិកាំងដែលប្រគល់ដោយលោកប្រធានាធិបតី Clinton ក្នុងរជ្ជកាលនោះវាជាមេដាយដែលបានមក ពីការខិតខំរបស់លោកក្នុងការអភិវឌ្ឍន៍ប្រព័ន្ធប្រតិបត្តិការ UNIX ដែលធ្វើការជាមួយនឹងភាសា C ជាហេតុធ្វើឲ្យមានភាពប្រសើរឡើងនៃការប្រើប្រាស់ Hardwar និង Software ក្នុងមុខងារប្រព័ន្ធ Computer Network ធ្វើឲ្យអាមេរិកាំងឈានមុខគេក្នុងយុគសម័យព័ត៌មានវិទ្យា ។
ឆ្នាំ២០០៧ លោក Dennis Ritchie បានចូលនិវត្តន៍ ក្នុងពេលដែលគាត់កំពុងជាប្រធានផ្នែក Lucent Technology System Software ។
1
Posted in គន្លឹះ C/C++, C#, គន្លឹះកុំព្យូទ័រ |
តើហេតុអ្វីចាំបាច់រៀន C++?
Posted on by TEAV Chhun Nan (ទំនាក់ទំនង ផ្សាយពាណិជ្ជកម្ម 077778647-070778647)
សម្រាប់ប្អូនៗដែលកំពុងរៀននៅតាមមហាវិទ្យាល័យនានាផ្នែក IT (Computer Science) ប្អូនៗត្រូវដឹងថាភាសារកម្មវិធី (Programming Language) ដែលប្អូនត្រូវយកចិត្តទុកដាក់បំផុតជាដំបូងនោះគឺភាសា C++ ដែលប្អូនរៀនក្នុងឆ្នាំដំបូងនៃផ្នែក IT ហេតុអ្វី?
Web IT2 copy+ ភាសា C++ ជាភាសារដំបូងដែលនាំឲ្យប្អូនបានចាប់ផ្ដើមស្គាល់ពីអ្វីដែលហៅថា Classes ដែលជាប្រភពនៃការបង្កើត Objects ហើយវាត្រូវបានអនុវត្តន៍យ៉ាងពេញលេញជាមួយនឹងភាសាកម្រិតខ្ពស់ដូចជា C#, Java, F#, Objective-C, PHP… ។ កាលណាប្អូនមានមូលដ្ឋាន Classes នេះរឹងមាំប្អូនអាចរៀនភាសាប្រភេទ OOP ដែលបាននិយាយខាងលើនេះដោយងាយ ជាពិសេសគឺប្អូនមានលទ្ធភាពអាចបង្កើត Libraries (សម្រាប់ Windows OS គឺ .DLL file ដែលប្អូនធ្លាប់បានឃើញ ឬ .so សម្រាប់ Android) ក្នុងការងារ Projects ធំៗ ។
+ ភាសា C++ ក៏ជាភាសារមូលដ្ឋានដែលដែលប្អូនៗបានហ្វឹកហាត់ការអត់ធ្មត់ជាមួយនឹងការ សរសេរកូដដ៏ច្រើនសម្រាប់បង្កើតកម្មវិធីណាមួួយ (ត្រូវចាំថាអ្នក Programmer គឺមានភាពអត់ធ្មត់ និង ការតស៊ូ ដើម្បីសម្រេចលើគោលបំណងនៃការបង្កើតកម្មវិធីណាមួយ) ។
+ភាសា C++ ជាមូលដ្ឋានដែលប្អូនៗបានស្វែងយល់ពីអ្វីដែលហៅថា Algorithm (មានសិស្សជាច្រើននៅមានភាពមិនច្បាស់លាស់ពីអ្វីដែលហៅថា Algorithm វាជាការងាយយល់ទេ វិធីសាស្រ្តនិងដំណាក់កាលជាជំហ៊ានៗដែលប្អូនៗយកមកដោះស្រាយបញ្ហាណាមួយ ហើយទទួលបានជោកជ័យដូចបំណងនោះហើយហៅថា Algorithm ត្រូវចាំថាការដោះស្រាយបញ្ហាមួយវានឹងមាន Algorithms ច្រើនអាចយកមកប្រើបាន) ។
1+ភាសា C++ ជាមូលដ្ឋានដែលបង្រៀនប្អូនឲ្យស្គាល់ពីអ្វីដែលហៅថា Data Structure ដោយប្អូននឹងរៀនពី Arrays, Pointer, LinkList, Stack, Queu… ដែលជាវិធីនៃការគ្រប់គ្រងទិន្នន័យបែបលក្ខណៈ flat មួយមុននឹងប្អូនៗឈានទៅរកការសិក្សាអំពី Database Management ,Generics, Collections,LAMDA, LINQ នៅក្នុង C# ឬ Java
+ភាសា C++ នឹងនាំឲ្យប្អូនៗបានយល់ពីអ្វីដែលហៅថា Control Structure ក្នុងការធ្វើឲ្យកម្មវិធីដែលប្អូនបានបង្កើតអាចធ្វើអ្វីមួយតាមតម្រូវ ការ ។ ពេលដែលប្អូនៗសិក្សាពី Control Structure ប្អូននឹងដឹងថាអ្វីទៅដែលហៅថា Expression និង Logic (ដែលប្អូនបានរៀនក្នុងគណិតវិទ្យាដូចជា តក្កវិទ្យា និង សំនុំជាដើម) ។
ជាសង្ខេបកាលណាប្អូនៗ មានមូលដ្ឋានភាសា C++ រឹងមាំប្អូនៗនឹងអាចរៀនភាសាកម្រិត High level ដូចជា C#, Java, PHP ឬក៏មានបំណងចង់សិក្សារបៀបសរសេរកម្មវិធី សម្រាប់ Android, Windows Phone ឬ iOS (iPod,iPhone, និង iPad បានលឿន) ។
Posted in គន្លឹះ C/C++, C#, គន្លឹះកុំព្យូទ័រ |
បង្កើត Game គ្រួ័រ
Posted on by TEAV Chhun Nan (ទំនាក់ទំនង ផ្សាយពាណិជ្ជកម្ម 077778647-070778647)
បង្កើត Game Tic Tac Toe ជាមួយកម្មវិធី Java
1Tic Tac Toe គឺជាល្បែងកំសាន្តមួយដ៏ពេញនិយម ដែលក្រឡាលេងមាន៩ ចន្លោះនៅលើក្រដាស។ មានមនុស្សពីរអ្នកលេង, ម្នាក់ប្រើសញ្ញា O, និងម្នាក់ទៀតប្រើសញ្ញា X, គួសតាមសញ្ញារបស់ខ្លួនម្ដងម្នាក់ៗតាមវេនរបស់ខ្លួន។ អ្នកឈ្នះគឺ ជាអ្នកដែលដាក់សញ្ញាឬគួសសញ្ញារបស់ខ្លួនបានមុនចំនួន៣តាម ទិសឈរ , ដេក ឬខ្វែង។ ហើយប្រសិនបើក្រោយពីបានដាក់ពេញចន្លោះក្រឡាអស់ហើយនៅតែមិនមែនអ្នកឈ្នះឬអ្នកចាញ់នោះ គឺមានន័យថា ស្មើគ្នា។ សូមក្រឡេកមើលរូបគំរូចំនួន៣ខាងក្រោមនេះ:
1(a) អ្នកកាន់ X ឈ្នះ (b) ស្មើគ្នា (c) អ្នកកាន់
ក្នុងអត្ថបទនេះ នឹងឧទ្ទេសនាមអ្នកពីដំណោះស្រាយដើម្បីរចនានឹងកសាងនូវកម្មវិធីកំសាន្តមួយនេះដោយប្រើភាសា Java។ នេះគឺជាដំនោះស្រាយដែលបានឧទ្ទេសនាមដោយ Daniel Liang ក្នុងសៀវភៅ “Introduction to Java Programming“។
វិភាគនិងរចនា បណ្ដារូបឧទាហរណ៏ដែលអ្នកបានឃើញខាងលើគឺគ្រាន់តែជាករណីខ្លះនៃល្បែងកំសាន្តនេះដែលយើងយកមកបង្ហាញនូវសកម្មភាព ឈ្នះចាញ់។តាមពិតទៅ ល្បែងកំសាន្ត Tic Tac Toe នៅមានចំនុចពិសេសៗនិងស្មុគ្រស្មាញច្រើនជាងនេះទៀត ដើម្បីបង្កើតបាន Class សម្រាប់ធ្វើបទ បង្ហាញលើសកម្មភាពឈ្នះចាញ់នេះ , យើងត្រូវស្រាវជ្រាវ និងយល់អោយច្បាស់ជាងនេះ អំពីល្បែងកំសាន្តមួយនេះ ។
Web IT2 copyឧបមាថាដំបូងឡើយគឺ មានក្រឡាទាំងអស់ (cell) ទំនេរ(មិនទាន់គួស), ហើយអ្នកលេងទី១គឺប្រើសញ្ញាX,អ្នកលេងទី២គឺប្រើសញ្ញា O។ ដើម្បី អនុវត្តជំហានដើរ នោះអ្នកលេង រំកិល Cursor ដល់ក្រឡាណាមួយរួចចុចនៅទីនេះ ។,បើសិនជាក្រឡាណាមួយ O (ឬ X)មិនទាន់គួស នោះអ្នកទី២នឹងត្រូវគួសបន្ត,ហើយផ្ទុយមកវិញបើក្រឡានោះមានគេគួសហើយគឺមិនអនុញ្ញាតិអោយគួសលើទៀតឡើយ។ តាមរយៈការពណ៌នាខាងលើ យើងឃើញថា ចំពោះក្រឡា(Cell)នីមួយ គឺជា Object GUI (Graphic User Interface –
ផ្ទៃប្រសព្វអ្នកប្រើ)មួយដែលអាចសំរួលការងារពេលមានការចុចបញ្ជាលើវានិងបង្ហាញសញ្ញាដែលបានកំណត់ណាមួយ។ Object នេះអាច ជា ប៊ូតុង(button) ឬជាផ្ទាំង មួយ (panel)។ ការគួសចេញលើ panelមួយគឺវានឹងមានភាពរស់រវើកជាង បើធ្វើនឹងការគួសលើbutton, ដោយហេតុថានៅលើ panelមួយគឺយើងអាចគួសបណ្ដាសញ្ញា X និង O ជាមួយទំហំណាមួយក៏បាន ដែលយើងបាន, ហើយចំណែកនៅលើ button មួយគឺយើងអាចបង្ហាញចេញតែចំពោះអក្សរឈ្មោ (text label)។ ដោយហេតុផលនេះយើងនឹងប្រើប្រាស់ panel មួយដើម្បីធ្វើបទបង្ហាញ ក្រឡាមួយរបស់ក្ដាលេងឬក្រដាសលេង។ ធ្វើរបៀបណាយើងអាចដឹងសញ្ញាបច្ចុប្បន្នរបស់ក្រឡានីមួយៗតើតើវាជា (ទំនេរ, X, ឬ O)? នៅក្នុង Class Cell យើងនឹងប្រើលក្ខណៈសម្គាល់មួយ(property)ឈ្មោះថា token មានប្រភេទទិន្ន័យជា char។ Class Cell មានភារកិច្ចគួសសញ្ញាពេលក្រឡាទំនេរពេលចុច Mouse (Mouse is clickede), ដូច្នេះយើងត្រូវការសរសេរកូដមួយដើម្បីរងចាំស្ដាប់ព្រឹត្តការ ( Event Listener) ឈ្មោះថា MouseEvent និងកំណាត់កូដមួយផ្សេងទៀតដើម្បីគួស បណ្ដាញសញ្ញា X ឬ O។ Class Cell អាចកំនត់ន័យបានដូចរូបភាពបង្ហាញខាងក្រោមនេះ :
1Class Cell គួសសញ្ញាក្នុងចន្លោះក្រឡា
token: សម្រាប់សំគាល់ក្នុងក្រឡា, តម្លៃកំណត់ស្រាប់គឺ ”
– getToken(): ផ្ដល់តំលៃអោយដឹង សញ្ញាដែលកំពុងមានលើចន្លោះក្រឡា.
– setToken(token: char): ដាក់សញ្ញាថ្មីអោយចន្លោះក្រឡា.
– paintComponent(g: Graphics): គូសសញ្ញានៅចន្លោះក្រឡា
– mouseClicked(e: MouseEvent): សម្រួលការងារពេលមានព្រឹត្តិការចុចលើចន្លោះក្រឡានោះ ។ក្ដាលេងល្បែងកំសាន្ត Tic Tac Toe រួមមាន 9 ចន្លោះ, បង្កើតឡើងដោយឃ្លាបញ្ជា new Cell[3][3]. ដើម្បីកំណត់វេនដើរជាបន្តបន្ទាប់របស់អ្នកលេង យើងនឹងប្រើអថេរមួយឈ្មោះថា whoseTurn (វេននរណាដើរ) ជាមួយប្រភេទ ទិន្ន័យ char. ដំបូងឡើយ whoseTurn នឹងមានតម្លៃ ‘X’,ក្រោយមកប្ដូរជា ‘O’ និងគឺបន្តបន្ទាប់ផ្លាស់ប្ដូរវេន រវាងតម្លៃទាំងពីរគ្រប់ពេលណាដែលចន្លោះក្រឡាណាដែលបានគួស។ ពេលដែលការប្រកួតចប់នោះតម្លៃរបស់ whoseTurn នឹងប្ដូរមកជា ‘ ‘.
ធ្វើយ៉ាងណាដើម្បីដឹងថា ល្បែងកំសាន្តត្រូវបានបញ្ចប់ហើយឬនៅ ? តើមាននរណាឈ្នះហើយឬនៅ? ហើយនរណាជាអ្នកឈ្នះ បើមាន ? យើងអាចបង្កើតបាន Method មួយឈ្មោះថា isWon (char token) ដើម្បីពិនិត្យមើលថា អ្នកលេងដែលមានការកំណត់សំគាល់ token បានទទួលជ័យជំនះហើយឬនៅ , និង Method មួយទៀត គឺ isFull() ដើម្បីពិនិត្យមើលថា តើក្រឡាទាំងអស់ត្រូវបានគួសអស់ឬនៅ ។ ជាមួយនិងការវិភាគដូច្នេះ, យើងឃើញថាចំាបាច់ត្រូវការ 2 Classes . Class ដំបូងគឺ Cell, ជាមួយតួនាទី របស់វាគឺ សំរួលការងាដែលកើតមានលើក្រឡាងណាមួយ។ Class ទីពីរគឺ TicTacToe មានមុខងារនិងតួនាទី អនុវត្តនិងសម្រួលការងារទាំងស្រុងលើ បណ្ដាក្រឡា។ ទំនាក់ទំនង Class ទាំងពីរនេះអាចបង្ហាញចេញជារូបភាពខាងក្រោមនេះ :
1- whoseTurn: ចង្អុលបញ្ជាក់ពី វេនដើររបស់អ្នកដើរ, ដំបូងគឺ X.
– cell: Array មានទិស ទំហំ 3 x 3 ក្រឡា.
– jlblStatus: ស្លាកមួយ (label) ដើម្បីបង្ហាញស្ថានភាពរបស់ game.
– TicTacToe(): បង្កើតឡើង GUI
– isFull(): អោយតំលៃ ជា true បើក្រឡាទាំងអស់ត្រូវបានគួស.
– isWon(token: char): អោយតំលៃ ជា true បើសិនអ្នកលេងមានសញ្ញា token បានឈ្នះ.
ដោយ ហេតុថា Class Cell ប្រើបានតែក្នុង Class TicTacToe ហេតុនេះវាអាច កំនត់អត្ថន័យខាងក្នុង Class TicTacToe (ហៅថា inner class).
កូដលំអិតរបស់កម្មវិធី សសរសេរដូចខាងក្រោមនេះ :
001
002
import java.awt.*;
import java.awt.event.*;
003
import javax.swing.*;
004
import javax.swing.border.LineBorder;
005
006
public class TicTacToe extends JApplet {
007
// កំណត់វេនបន្តបន្ទាប់របស់អ្នកលេង, តម្លៃដំបូងគឺ X
008
private char whoseTurn = 'X';
009
010
// បង្កើតក្រឡាឡើង
011
private Cell[][] cells = new Cell[3][3];
012
013
// បង្កើត label កំណត់ស្ថានភាពរបស់ល្បែងកំសាន្ត
014
private JLabel jlblStatus = new JLabel("X's turn to play");
015
016
/** Initialize UI */
017
public TicTacToe() {
018
// Panel p សម្រាប់ដាក់បណ្ដាក្រឡា
019
JPanel p = new JPanel(new GridLayout(3, 3, 0, 0));
020
for (int i = 0; i < 3; i++)
021
for (int j = 0; j < 3; j++)
022
p.add(cells[i][j] = new Cell());
023
024
// ផ្លាស់ប្ដូរខ្សែព្រំដែនរបស់ក្រឡា និងlabel សណ្ឋានភាព
025
p.setBorder(new LineBorder(Color.red, 1));
026
jlblStatus.setBorder(new LineBorder(Color.yellow, 1));
027
028
// បញ្ចូន panel និង label ទៅក្នុង applet
029
add(p, BorderLayout.CENTER);
030
add(jlblStatus, BorderLayout.SOUTH);
031
}
032
033
/**
034
កំណត់មើលថា តើក្រឡាទាំងអស់ត្រូវបាន គួសហើយ ឬនៅ
035
*/
036
public boolean isFull() {
037
for (int i = 0; i < 3; i++)
038
for (int j = 0; j < 3; j++)
039
if (cells[i][j].getToken() == ' ')
040
return false;
041
042
return true;
043
}
044
045
/**
046
កំណត់មើលថាតើអ្នកលេងដែលកាន់យកសញ្ញា token បានឈ្នះ ហើយ ឬនៅ
047
*/
048
public boolean isWon(char token) {
049
for (int i = 0; i < 3; i++)
050
if ((cells[i][0].getToken() == token)
051
&& (cells[i][1].getToken() == token)
052
&& (cells[i][2].getToken() == token)) {
053
return true;
054
}
055
056
for (int j = 0; j < 3; j++)
057
if ((cells[0][j].getToken() == token)
058
&& (cells[1][j].getToken() == token)
059
&& (cells[2][j].getToken() == token)) {
060
return true;
061
}
062
063
if ((cells[0][0].getToken() == token)
064
&& (cells[1][1].getToken() == token)
065
&& (cells[2][2].getToken() == token)) {
066
return true;
067
}
068
069
if ((cells[0][2].getToken() == token)
070
&& (cells[1][1].getToken() == token)
071
&& (cells[2][0].getToken() == token)) {
072
return true;
073
}
074
075
return false;
076
}
077
078
// inner class មួយ តំណាងអោយ ក្រឡាមួយចន្លោះ
079
public class Cell extends JPanel {
080
// សញ្ញាសម្គាល់របស់ចន្លោះ ក្រឡានេះ
081
private char token = ' ';
082
083
public Cell() {
084
setBorder(new LineBorder(Color.black, 1)); // ផ្លាស់ប្ដូរខ្សែព្រំដែនក្រឡា
085
addMouseListener(new MyMouseListener()); // ចុះឈ្មោះ listener
086
}
087
088
/**
089
អោយតំលៃជាសញ្ញាសំគាល់របស់ក្រឡា
090
*/
091
public char getToken() {
092
return token;
093
}
094
095
/**
096
បញ្ចូលសញ្ញាថ្មីអោយក្រឡា
097
*/
098
public void setToken(char c) {
099
token = c;
100
repaint();
101
}
102
103
/**
104
គួសក្រឡា
105
*/
106
protected void paintComponent(Graphics g) {
107
super.paintComponent(g);
108
109
if (token == 'X') {
110
g.drawLine(10, 10, getWidth() - 10, getHeight() - 10);
111
g.drawLine(getWidth() - 10, 10, 10, getHeight() - 10);
112
}
113
else if (token == 'O') {
114
g.drawOval(10, 10, getWidth() - 20, getHeight() - 20);
115
}
116
}
117
118
private class MyMouseListener extends MouseAdapter {
119
/** សំរួលការងារពេលមានការចុះ Mouse ក្នុង ក្រឡា */
120
public void mouseClicked(MouseEvent e) {
121
// បើសិនជាក្រឡានៅទំនេរ ហើយល្បែងកំសាន្តនៅមិនទាន់បញ្ចប់
122
if (token == ' ' && whoseTurn != ' ') {
123
setToken(whoseTurn); // ផ្លាស់ប្ដូរសញ្ញាអោយក្រឡា
124
// ពិនិត្យមើលសណ្ឋាភាពរបស់ល្បែងកំសាន្ត
125
if (isWon(whoseTurn)) {
126
jlblStatus.setText(whoseTurn + " won! The game is over");
127
whoseTurn = ' '; // ល្បែងកំសាន្តត្រូវបានបញ្ចាប់
128
}
129
else if (isFull()) {
130
jlblStatus.setText("Draw! The game is over");
131
whoseTurn = ' '; // ល្បែងកំសាន្តត្រូវបានបញ្ចាប់
132
}
133
else {
134
// ផ្លាស់ប្ដូរវេនដើរ
135
whoseTurn = (whoseTurn == 'X') ? 'O': 'X';
136
// បង្ហាញ វេនអ្នកដើរ
137
jlblStatus.setText(whoseTurn + "'s turn");
138
}
139
}
140
}
141
}
142
}
143
144
/**
145
Method main() អនុញ្ញាតិអោយ applet រត់បានដូចទៅនឹងកម្មវិធីប្រើប្រាស់មួយអច្ចឹង
146
*/
147
public static void main(String[] args) {
148
// បង្កើត frame មួយ
149
JFrame frame = new JFrame("TicTacToe";);
150
151
// បង្កើត instance (តំណាង)មួយរបស់ applet
152
TicTacToe applet = new TicTacToe();
153
154
// បន្ថែម instance របស់ applet ទៅក្នុង frame
155
frame.add(applet, BorderLayout.CENTER);
156
157
// បង្ហាញ frame
158
frame.setSize(300, 300);
159
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
160
frame.setVisible(true);
161
}
162
}
Post by : IT CAMBO
0 comments:
Post a Comment