Skip to main content

Chiếc nón kì diệu phiên bản 2004 viết bằng Pascal

Nhân dịp sinh nhật Turbo Pascal 40 tuổi, tìm lại trò chơi Chiếc nón kì diệu mình viết năm 2004. Hồi đó không hiểu kết nối như thế nào mà cũng được đăng lên báo.

e-CHÍP bắt đầu từ 2003, tới 2016 thì ngưng báo giấy chuyển lên báo điện tử, rồi từ từ chìm dần. Hồi đó ít báo chí, chỉ mong chờ Làm bạn với máy ví tính và e-CHÍP ra để đọc ngấu nghiến. Tới giờ vẫn còn nhớ câu slogan "Tin học như cơm bình dân". Chắc anh chị em 9x làm IT thì ai cũng biết tới báo này, cả một bầu trời tuổi thơ luôn. Xem thêm bài của bác Phạm Hồng Phước về báo e-CHÍP

Do web sập rồi nên copy nguyên văn lại bài PR cũ ra đây, văn vẻ hồi đó cứ như ChatGPT viết...

Giới thiệu về chương trình “CHIẾC NÓN KÌ DIỆU”
Ngôn ngữ: Pascal
Tác giả: Đào Hoàng Sơn (THCS Đống Đa)

1. Ý tưởng ban đầu
Ban đầu, chỉ với sự hứng thú với chương trình chiếc nón kì diệu trên truyền hình, đồng thời do được chơi 1 trò chơi làm bằng Flash giả như là chương trình chiếc nón kì diệu nên tôi đã nảy ra mong muốn làm 1 chương trình như vậy.
Chỉ tới khi biết về Pascal, tôi mới có cơ hội này, đây gần như là chương trình đầu tiên mà tôi viết được nên có thể nói, nó cũng có khá nhiều khuyết điểm.

2. Khó khăn khi làm chương trình
Do mới tập tành về Pascal chưa lâu, thành ra khi viết chương trình tôi cảm thấy thực sự khó khăn vì có quá nhiều nhu cầu của mình mà mình vẫn chưa biết câu lệnh nào có thể đáp ứng được. Dần dần, chương trình cũng có thể nói là đã đạt được những điều tối thiểu mà tôi mong muốn:
  1. Chạy ổn đinh!
  2. Các câu hỏi được đặt ra một cách khá ngẫu nhiên.
  3. Những câu nói của anh “Long Vũ” khá là “lém lỉnh”
3. Đối tượng hướng tới của chương trình
Nói thật, nếu xét về khía cạnh thuật toán thì Pascal không hề thua kém những ngôn ngữ lập trình khác tuy nhiên, về mặt “mĩ thuật” thì Pascal còn thua các ngôn ngữ kia rất nhiều. Vì điều này mà những chương trình viết ra trông khá là thô, xấu. Chương trình của tôi cũng không phải là một ngoại lệ, giao diện của chương trình toàn là chữ! Quá tệ! Và đương nhiên, chương trình sẽ không thể cạnh tranh với các chương trình khác, ngay cả chương trình làm bằng Flash mà tôi lấy ý tưởng cũng hấp dẫn hơn rất nhiều.
Vì vậy, tôi chỉ muốn viết chương trình này để cùng chia sẻ với bạn bè những kinh nghiệm thú vị tôi đã tìm thấy khi viết những chương trình của mình.

4. Hướng phát triển
Tôi đang cố gắng chuyển chương trình sang màn hình độ hoạ để đẹp hơn, viết thêm 1 phần nữa để đưa thêm câu hỏi vào thư viện của chương trình, tạo ra phần chơi nhiều người. Đặc biệt tôi còn đang tìm cách hoá mã file đáp án để các bạn tò mò không thể xem được những câu trả lời. Và tôi lại gặp những khó khăn mới:
  1. Lệnh OutTextXY không thể sử dụng để viết các biểu thức, số và mất thời gian chuyển biểu thức, số sang xâu kí tự.
  2. Để thêm câu hỏi, chương trình cần di chuyển xuống cuối file thì mới có thể dùng Write, Writeln nhưng chưa tìm ra được biện pháp nào khả thi.
  3. Khi mã hoá đáp án, tốc độ chương trình chậm do phải kiểm tra từng chữ cái một.
  4. ….
5. Luật chơi
Giống như chương trình thật trên truyền hình, khi chơi game bạn cũng phải tuân thủ những luật chơi nhất định:
  1. Bạn chỉ được phép đoán sai 5 lần trong 1 vòng đấu, nếu sai đến lần thứ 6 thì bạn sẽ phải ra ngoài!
  2. Điểm số và các loại ô đặc biệt cũng xuất hiện: may mắn, chia đôi, nhân đôi, “phá sản”.
  3. Anh “Long Vũ” ảo sẽ thường xuyên xuất hiện nhưng sẽ không gợi ý gì cho bạn đâu, anh ta chỉ toàn nói linh tinh thôi!
  4. Các bạn hay chú ý “nghịch”, hy vọng bạn sẽ tìm thấy món quà của tôi giấu trong chương trình (nhớ là đừng xem mã nguồn đấy!)

Cũng may là có WaybackMachine lưu lại file zip nên mới chạy lại được. Cái giao diện "trông khá là thô, xấu" nó như thế này đây 🙈


Nếu ai tò mò thì có thể coi full source ở github.com.

Comments

Popular posts from this blog

Flutter: Fixing Firebase header not found with Notification Service Extension

If you follow the FCM tutorial Send an image in the notification payload and encountered this error message: 'FirebaseMessaging/FirebaseMessaging.h' file not found You are on the right place, I'm going to show you how to fix it. My app was working fine but one day it stopped compiling. Apparently Flutter 1.20 changed the way it uses CocoaPod so the service extension no longer has the proper library configured. After some tinkering, I came up with this pod config, it has to be added to ios/Podfile below the main Runner target. target 'FcmImage' do use_frameworks! use_modular_headers! require File.expand_path('../.symlinks/plugins/firebase_core/ios/firebase_sdk_version.rb', __FILE__) firebase_sdk_version = firebase_sdk_version! pod 'Firebase/Messaging', "~> #{firebase_sdk_version}" end FcmImage is my extension name, replace it with yours We can use a hardcoded version for Firebase/Messaging pod but doing so m...

IMAP module for PHP in Mac OS X Mountain Lion

So here it comes again. I have recently upgraded to Mountain Lion and for whatever reason, Apple decided to nuked all my previous PHP (among other things) configurations so I have to setup IMAP in PHP again. A simple Google search may point you to this post with detailed instruction for Lion however, some steps have been changed a bit... Step 1: Install prerequisites You may choose to download Xcode ( FREE ) from the App Store then go to menu Xcode > menu item Preferences > tab Downloads, select to install Command Line Tools OR you can go to Apple Developer  to get it, you may need to login. Step 2: Compile IMAP Get the IMAP source code from University of Washington website . Please do me a favor and check that website for the latest version, it's good practice. If you that laz y , try to click the "y" to get direct link to 2007f version. Extract the package and open the Terminal to the new directory before executing these command: make osx EXTRACFLAG...

OAuth with Google, Twitter and... Facebook!

This is sick! Just a few days ago, I ran into OAuth as I want to get my GMail feed based on Google Data API . I succeeded. With a little help of an OAuth open source ( here , available in several programming languages). Then I remember that I once heard that Twitter also uses OAuth as an authentication option so I turned into Twitter and had a good read. Finally, I found out that they are basically the same (hehe, it's obvious since OAuth 1.0 is a worldwide standard). I had an idea of writing a universal class which can handle both Google and Twitter OAuth functionalities. It's not too hard. I took most of the idea from the PHP example ( here , PHP only). I also made a small script which accepts URI to send and intercept response from Google & Twitter servers. At that moment, I was so excited with all the ideas but actually it has no real world benefit so I just left it there... Until today, in the F8 (says "fate") conference of Facebook, I was stunned fin...