English
Chinese |
The ABC project started in December 1997, at that time, we only had two persons in charge of this project with only half a year of programming experience and confined to MS-DOS based Quick Basic while we wanted to program a board game for Windows 95, so we went through a crash course training on Microsoft Visual Basic. Due to the simplicity of Visual Basic 5, we quickly got familiar with the concept of GUI interface, propeties, methods, events under Visual Basic. But it did not seem enough if we want to program a powerful enough system that consisted of a board game and a chat client. Finally, we learn about the Data Structure and Algorithms in Visual Basic (is it possible for a toy language to implement data structure?) In order to learn about Data Structures we had to learn about ARRAYs in Visual Basic. William only taught us a few concepts dealing with ARRAYs in Data Structure, and then assigned us a couple of projects that dealt with arrays:
(1) statistic, find the mean, median and mode from a series number given and
(2) matrix addition and multiplication.
Eventually, we learned some other concepts in Data Structure :
- List -- using Dynamic Arrays to simulate it. We used this concept to keep user lists and channel lists in the server while keeping a list of channels joined in client.
- Queue -- Keep message in or out in client and server.
- Stack -- At the moment did not apply in ABC project.
We also learn about recursive methods, searching and sorting algorithms :
- Recursive --
- Sequential Search --
- Binary Search --
- Bubble Sort -
- Selection Sort -
- Insertion Sort -
- Quick Sort -
File manipulation is necessary for the client as well as the server since there is information needs to be stored permenantly. For example, the client needs to keep the user id, user e-mail address and the server IP address. While learning these concepts we produced three small programs:
- Profile access module - we have used sequential file access method to implement a module that can read and write any type of windows .ini file, but finally we still go back to use Windows API to do the job, more faster and safer.
- Hacker Paradise - Don't believe we can write a program that crack computer game? It is facts, click here to visit the page. The program interface is much like Infinity Machine, but the different is that this program worked only in file, not memory. Hacker Paradise provided you two methods to crack the game, at the moment, we only had a game sample that proved our successful of the hacker paradise. Whatever implicit or explicit value can be cracked at a glimpse.
- A & B board game map file - the file format of A & B game is stored in the server, while client is connecting to the server, then the server sends the format to client.
English
Chinese |
ABC ¨t ²Î ©ó ¤@ ¤E ¤E ¤C ¦~ ¤Q ¤G ¤ë ¶} ©l ³] p, ·í ®É ¥u ¦³ §Ú Ì ¨â ¦ì ¦P ¾Ç t ³d ¼¶ ¼g. ¥i ¬O §Ú Ì ªº µ{ ¦¡ ³] p ¸g Åç ¥u ¦³ ¥b ¦~ ¦Ó ¤w, ¥B ¶È ©ó DOS ªº Quick Basic ½} ¤F. ©ó ¬O ·í °È ¤§ «æ «K ¬O « ·s ±µ ¨ü ¥t ¤@ ºØ ÄY ®æ ªº µ{ ¦¡ ³] p °V ½m, ¦b William ¦Ñ ®v ªº ¤Þ ¾É ¤U, §Ú Ì «Ü §Ö ´x ´¤ ¨ì ¤F Visual Basic ªº µ{ ¦¡ ³] p §Þ ¥©, ¥] ¬A ¤° »ò ¬O properties, methods, events.. ¦ý ¬O ¥u À´ ³o ¨Ç ¦ü ¥G ¤£ ¯à ¸Ñ ¨M °Ý ÃD. ©ó ¬O §Ú Ì ¦A ´c ¸É µ{ ¦¡ ³] p ªº §ó °ª ¹Ò ¬É: ¸ê ®Æ µ² ºc ©M ºt ºâ ªk (data structure and algorithm).
¤@ ¶} ©l §Ú Ì Ä± ±o ¾Ç data structure ¦ü ¥G »P ABC ¨S ¦³ Ãö «Y, ¦ý ¬O ¦Ñ ®v ±j ½Õ ³o ¨Ç «D ±` « n, ©Ò ¥H ¥u ¦n «j ¬° ¨ä Ãø ¥h ¾Ç Åo. ¾Ç ³o ¨Ç ªF ªF ¯u ±o «Ü ´e... ¦ý ¬O «á ¨Ó §Ú Ì ¤~ µo ²{ data structure ¯u ±o «Ü ¦³ À° §U.
¸ê ®Æ µ² ºc ¤è ± ª¾ ¹D ªº ¦³:
- Lists: §Q ¥Î dynamic array ¨Ó ¼Ò ÀÀ, ¦ý ¬O ·í ªÅ ¶¡ ¶V ¤j ®É ·h °Ê ³t «× ·| ¶V ºC.
- Stack: ¥Ø «e ¤´ µM ¤£ ª¾ ¾Ç ¤F ¨Ó ·F Ô£, ¥u ª¾ call sub ®É ¤Î recursive ®É ·| ¥Î ¨ì.
- Queue: ³o Ó ¤× ¬° « n, ¦] ¬° chat server »Ý n §â ¤@ ¤j °ï ªº message °µ spooling.
- Recursive: ¥Ø «e ¤´ µM ¤£ ª¾ ¾Ç ¤F ¨Ó ·F Ô£.
ºt ºâ ªk ¤è ± ª¾ ¹D ªº ¦³:
- Sequential Search: ³Ì ² ³æ ªº search ¤è ªk, ¦b ABC ¤¤ ±` ±` ¥Î ¨ì.
- Binary Search: ¦b ordered array ¤¤ ´M §ä ¬Y ¤@ ¸ê ®Æ ©Ò ¥Î ªº ¤è ªk. ³Ì §Ö ªº ·j ´M ¤è ªk, ¥i ¦b log2N ªº ®É ¶¡ ¤U §ä ¨ì ¸ê ®Æ (©Î §ä ¤£ ¨ì).
- Bubble Sort: ¥Ø «e ¤´ µM ¤£ ª¾ ¾Ç ¤F ¨Ó ·F Ô£, ¦ý ¬O «D ±` ¦³ ½ì.
- Selection Sort: ¥Ø «e ¤´ µM ¤£ ª¾ ¾Ç ¤F ¨Ó ·F Ô£, ¦ý ¬O «D ±` ¦³ ½ì.
- Insertion Sort: ¥Ø «e ¤´ µM ¤£ ª¾ ¾Ç ¤F ¨Ó ·F Ô£, ¦ý ¬O «D ±` ¦³ ½ì.
- Quick Sort: ¤´ µM ¤£ ¤Ó ²M ·¡ ¸Ì ± ªº ¸Ô ²Ó ¹L µ{, ¥u ª¾ ¥¦ ¬O ¥@ ¬É ¤W ³Ì §Ö ªº sorting method, ¸g ¹L §Ú Ì ªº benchmark ´ú ¸Õ, ³t «× §Ö ªº Åå ¤H.
¦b ÀÉ ®× ³B ²z ¤è ±, §Ú Ì ¥i ¥H »¡ ¬O ¨ì ¤F Äl ¤õ ¯Â «C ªº ¹Ò ¬É, §Ú Ì ¤@ ¦@ ¹ê §@ ¤F ¤T ®M «Ü ¦³ ·N «ä ªº µ{ ¦¡:
- profile reading/writing: ¥i ¥H ª½ ±µ Ū ¨ú ¤Î × §ï .ini ªº ¤º ®e, ¦ý ¬O «á ¨Ó ÁÙ ¬O ¨Ï ¥Î Windows API ¤ñ ¸û ¦w ¥þ ¥i ¾a.
- games modify tools: ¥H µÛ ¦W ªº ¥x ÆW RPG ¹C À¸ ¥P ¼C ©_ «L ¶Ç ¬° ¸Õ Åç, µ² ªG ¦¨ ¥\ §¹ ¦¨. ¦¹ µ{ ¦¡ ´£ ¨Ñ ¨â ºØ ¼Ò ¦¡ × §ï ¹C À¸ ¤¤ ªº ¥ô ¦ó ¼Æ È, ¥] ¬A ¸ú ±o «Ü Áô ±K ªº §õ ³p »» ªº §ð À» ¤O ¸ê ®Æ ¤] ¥i × §ï, ¼K ¼K...¬Û «H ³o ®M ¤u ¨ã °Ý ¥@ ªº ¸Ü, ¥² ©w «Ü ¨ü Åw ªï, ¥i ¯à ·| ³y ¦¨ ¬¥ ¶§ disk ¶Q ®@... × §ï «á ªº §õ ³p »» ¥u »Ý ¨â ©Û §Y ¥i "°µ §C" Ãa ¤H ÀY ÀY, ¹ê ¦b ¤Ó ²n ¤F (¤] ¤Ó µL ²á ¤F). (§Ú Ì ¥¿ ¦b ¬ã ¨s ¬O §_ n ©ñ ³o Ó µ{ ¦¡ ¦b ºô ¤W, ¥H activeX ªº §Î ¦¡ ¨Ó ¶i ¦æ ¥P ¼C cracking ¤u §@...)
- A&B map : ABC ³Ì ¤j ªº ¯S ¦â ¬O ¤j ®a ¥i ¥H ¤@ ± ¦b ºô ¸ô ¤W ²á ¤Ñ ¤@ ± ª± °« Ã~ ´Ñ, °« Ã~ ´Ñ ¹C À¸ ªº ¦a §Î ¥H ÀÉ ®× ªº §Î ¦¡ ¦s ©ó ¦ø ªA ¾¹ (server), ·í client ¶i ¤J channel ®É, «h server ·| ±H °e ¦a §Î ¹Ï ªº ®æ ¦¡ (format) ©ó client.
Graphics ¤è ±:
Object-Oriented Programming ¤è ±: OOP ¬O ¥t ¤@ ºØ µ{ ¦¡ ³] p ªº ¤è ªk, ¥H class ªº §Î ¦¡ ¥] ¸Ë program code, ¦b class ùØ ± ©Ò ©w ¸q ªº properties ¥i ¥H hide ©Î export ¥X ¥h, ¤£ »Ý n « ·s compile «K ¥i ª½ ±µ ¦b Visual Basic ªº IDE ¤¤ ¨Ï ¥Î.
Windows Socket ¤è ±: n §Ú Ì ¨â ¦ì °ª ¤¤ ¥Í ¼g ¦Û ¤v ªº windows socket API ² ª½ ¬O ¤Ñ ¤è ©] ÃÓ, ©Ò ¥H §Ú Ì ÁÙ ¬O ¨Ì ¾a Microsoft ªº winsock activeX control ¨Ó §¹ ¦¨. ¤£ ¹L ¨º ¥u °µ ¨ì ¤F ³q °T ªº §C ¶¥ ªA °È, ¸ê ®Æ n «ç »ò ¥] ¸Ë ÁÙ ¬O n ¬Ý §Ú Ì ªº µ{ ¦¡ ÅÞ ¿è.