#include <stdio.h>
int main(void)
{
int i, j;
long dec; /* ให้รับค่าอินพุทแบบ Long Integer - เลขจำนวนเต็มแบบยาว */
int bit[32]; /* จองพื้นที่ในการเก็บข้อมูลเลขฐาน 2 ลงใน Array */
clrscr(); /* เคลียร์หน้าจอ */
printf("Decimal Number : "); /* แจ้งผู้ใช้เพื่อเตรียมป้อนค่าเลขฐาน 10 */ scanf("%ld", &dec); /* ต้องใช้ ld เพราะ Input มันเป็นแบบ Long Integer */
i = 0; /* กำหนดค่าเริ่มต้นของ Array */
/* ทำตามที่ได้ออกแบบโปรแกรมเอาไว้ ... ยังไงยังงั้นเลย 55555+ */
do {
bit[i++] = dec % 2; /* การหารเอาเศษ เพื่อให้เป็นคำตอบ */
/* การหารทั่วไป แต่ตัวแปร dec ของภาษา C มันเป็น Integer หรือ เลขจำนวนเต็ม */
/* ดังนั้นมันจึงตัดเศษ (หรือทศนิยม) ทิ้งไปโดยอัตโนมัติ */
dec = dec / 2;
} while (dec > 0); /* เงื่อนไขที่ทำจนกระทั่ง dec = 0 ก็ออกจากวังวนเงื่อนไข */
/* การแสดงผลของการแปลงเลขฐาน 10 เป็นเลขฐาน 2*/
/* j = i - 1 และให้ j ลดค่าลงทีละ 1 ... ก็คืออ่านข้อมูลถอยหลังกลับเท่านั้นเองครับ */
/* เพราะตัวแปรแบบ Array ในภาษา C มันเก็บข้อมูลจากซ้ายไปขวา */
/* ทำให้ LSB มันไปอยู่ทางซ้าย ส่วน MSB มันไปอยู่ทางขวา */
for(j = i - 1; j >= 0; j--)
return 0;
}
const MAX_PLAYER_LEVEL = 999; const MAX_GUILD_LEVEL = 500;
class Character
{ constructor
(name
, job
, gender
) { this
.name
= name
; this
.job
= job
; this
.gender
= gender
; this
.level
= 1; this
.exp = 0; this
.guild
= null; this
.inventory
= []; this
.quests
= []; this
.outfit
= { head
: null, body
: null, legs
: null, accessory
: null, }; }
gainExp
(amount
) { this
.exp += amount
; while (this
.exp >= this
.requiredExp
()) { this
.levelUp
(); } }
requiredExp() { return 100 + this.level * 20; }
levelUp
() { if (this
.level
< MAX_PLAYER_LEVEL
) { this
.level
++; this
.exp = 0; console
.log($
{this
.name
} เลเวลอัพเป็น $
{this
.level
}); } }
joinGuild(guild) { this.guild = guild; guild.addMember(this); }
changeOutfit
(part
, item
) { if (this
.outfit
.hasOwnProperty
(part
)) { this
.outfit
[part
] = item
; console
.log($
{this
.name
} เปลี่ยนชุดส่วน $
{part
} เป็น $
{item
}); } } }
class Guild { constructor(name, founder) { this.name = name; this.level = 1; this.members = []; this.rank = 0; this.decorations = []; this.founder = founder; }
addMember(character) { this.members.push(character); }
gainGuildExp
(points
) { if (this
.level
< MAX_GUILD_LEVEL
) { this
.level
+= Math
.floor(points
/ 100); } }
decorate(item) { this.decorations.push(item); } }
function createGuild(name, founder) { const newGuild = new Guild(name, founder); founder.joinGuild(newGuild); return newGuild; }
class Quest { constructor(name, description, requiredJob, rewardExp) { this.name = name; this.description = description; this.requiredJob = requiredJob; this.rewardExp = rewardExp; }
canAccept(character) { return this.requiredJob === null || character.job === this.requiredJob; }
complete(character) { character.gainExp(this.rewardExp); } }
class Dungeon { constructor(name, requiredLevel, bossName, rewardItems) { this.name = name; this.requiredLevel = requiredLevel; this.bossName = bossName; this.rewardItems = rewardItems; }
enter
(character
) { if (character
.level
>= this
.requiredLevel
) { console
.log($
{character
.name
} เข้าสู่ดันเจี้ยน $
{this
.name
}); } else { console
.log("เลเวลยังไม่ถึงสำหรับดันเจี้ยนนี้"); } } }
class Market { constructor() { this.listings = []; }
listItem
(seller
, item
, price
) { this
.listings
.push
({ seller
, item
, price
}); console
.log($
{seller
.name
} ลงขาย $
{item
} ราคา $
{price
} โกลด์
); }
buyItem
(buyer
, itemName
) { const index
= this
.listings
.findIndex
(l
=> l
.item
=== itemName
); if (index
!== -1) { const listing
= this
.listings
.splice
(index
, 1)[0]; buyer
.inventory
.push
(listing
.item
); console
.log($
{buyer
.name
} ซื้อ $
{listing
.item
} จาก $
{listing
.seller
.name
}); } else { console
.log("ไม่พบไอเท็มในตลาด"); } } }
class ChatSystem { constructor() { this.publicChat = []; this.guildChats = {}; this.privateChats = {}; }
sendPublic(message, sender) { this.publicChat.push({ sender, message }); }
sendGuild(guild, message, sender) { if (!this.guildChats[guild.name]) this.guildChats[guild.name] = []; this.guildChats[guild.name].push({ sender, message }); }
sendPrivate
(from
, to
, message
) { const key = [from
.name
, to
.name
].sort().join("_"); if (!this
.privateChats
[key]) this
.privateChats
[key] = []; this
.privateChats
[key].push
({ from
: from
.name
, to
: to
.name
, message
}); } }
// === ตัวอย่างการใช้งานเบื้องต้น === const kazuki = new Character("Kazuki", "นักเวทย์", "ชาย"); const mefu = new Character("Mefu", "นักพฤกษศาสตร์", "หญิง");
const naniGuild = createGuild("Nani Dimension", kazuki);
const flowerQuest = new Quest("กลิ่นหอมของสันติ", "เก็บกลีบมูนวู้ดจากป่ามืด", "นักพฤกษศาสตร์", 500); if (flowerQuest.canAccept(mefu)) { flowerQuest.complete(mefu); }
const dungeon = new Dungeon("ถ้ำคาเมลเลีย", 40, "Arlo Vikus", ["กลีบคาเมลเลีย"]); dungeon.enter(kazuki);
kazuki.changeOutfit("head", "หมวกพ่อมดไฟ"); mefu.changeOutfit("accessory", "เข็มกลัดดอกไม้เงิน");
const market = new Market(); market.listItem(mefu, "ดอกคาเมลเลียขาว", 120); market.buyItem(kazuki, "ดอกคาเมลเลียขาว");
const chat = new ChatSystem(); chat.sendPublic("ยินดีต้อนรับผู้กล้าทุกคน!", kazuki); chat.sendGuild(naniGuild, "คืนนี้ลงดันตีบอส!", mefu); chat.sendPrivate(kazuki, mefu, "พร้อมหรือยัง?");
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgbWFpbih2b2lkKQp7CmludCBpLCBqOwpsb25nIGRlYzsgIC8qIOC5g+C4q+C5ieC4o+C4seC4muC4hOC5iOC4suC4reC4tOC4meC4nuC4uOC4l+C5geC4muC4miBMb25nIEludGVnZXIgLSDguYDguKXguILguIjguLPguJnguKfguJnguYDguJXguYfguKHguYHguJrguJrguKLguLLguKcgKi8KaW50IGJpdFszMl07ICAvKiDguIjguK3guIfguJ7guLfguYnguJnguJfguLXguYjguYPguJnguIHguLLguKPguYDguIHguYfguJrguILguYnguK3guKHguLnguKXguYDguKXguILguJDguLLguJkgMiDguKXguIfguYPguJkgQXJyYXkgKi8KCiAgICBjbHJzY3IoKTsgIC8qIOC5gOC4hOC4peC4teC4ouC4o+C5jOC4q+C4meC5ieC4suC4iOC4rSAqLwogICAgcHJpbnRmKCJEZWNpbWFsIE51bWJlciA6ICIpOyAgLyog4LmB4LiI4LmJ4LiH4Lic4Li54LmJ4LmD4LiK4LmJ4LmA4Lie4Li34LmI4Lit4LmA4LiV4Lij4Li14Lii4Lih4Lib4LmJ4Lit4LiZ4LiE4LmI4Liy4LmA4Lil4LiC4LiQ4Liy4LiZIDEwICovCiAgICBzY2FuZigiJWxkIiwgJmRlYyk7ICAvKiDguJXguYnguK3guIfguYPguIrguYkgbGQg4LmA4Lie4Lij4Liy4LiwIElucHV0IOC4oeC4seC4meC5gOC4m+C5h+C4meC5geC4muC4miBMb25nIEludGVnZXIgKi8KICAgIGkgPSAwOyAgLyog4LiB4Liz4Lir4LiZ4LiU4LiE4LmI4Liy4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4LiC4Lit4LiHIEFycmF5ICovCiAgICAvKiDguJfguLPguJXguLLguKHguJfguLXguYjguYTguJTguYnguK3guK3guIHguYHguJrguJrguYLguJvguKPguYHguIHguKPguKHguYDguK3guLLguYTguKfguYkgLi4uIOC4ouC4seC4h+C5hOC4h+C4ouC4seC4h+C4h+C4seC5ieC4meC5gOC4peC4oiA1NTU1NSsgKi8KICAgIGRvIHsKICAgICAgICBiaXRbaSsrXSA9IGRlYyAlIDI7ICAvKiDguIHguLLguKPguKvguLLguKPguYDguK3guLLguYDguKjguKkg4LmA4Lie4Li34LmI4Lit4LmD4Lir4LmJ4LmA4Lib4LmH4LiZ4LiE4Liz4LiV4Lit4LiaICovCgogICAgICAgIC8qIOC4geC4suC4o+C4q+C4suC4o+C4l+C4seC5iOC4p+C5hOC4myDguYHguJXguYjguJXguLHguKfguYHguJvguKMgZGVjIOC4guC4reC4h+C4oOC4suC4qeC4siBDIOC4oeC4seC4meC5gOC4m+C5h+C4mSBJbnRlZ2VyIOC4q+C4o+C4t+C4rSDguYDguKXguILguIjguLPguJnguKfguJnguYDguJXguYfguKEgKi8KICAgICAgICAvKiDguJTguLHguIfguJnguLHguYnguJnguKHguLHguJnguIjguLbguIfguJXguLHguJTguYDguKjguKkgKOC4q+C4o+C4t+C4reC4l+C4qOC4meC4tOC4ouC4oSkg4LiX4Li04LmJ4LiH4LmE4Lib4LmC4LiU4Lii4Lit4Lix4LiV4LmC4LiZ4Lih4Lix4LiV4Li0ICovCiAgICAgICAgZGVjID0gZGVjIC8gMjsKCiAgICB9IHdoaWxlIChkZWMgPiAwKTsgIC8qIOC5gOC4h+C4t+C5iOC4reC4meC5hOC4guC4l+C4teC5iOC4l+C4s+C4iOC4meC4geC4o+C4sOC4l+C4seC5iOC4hyBkZWMgPSAwIOC4geC5h+C4reC4reC4geC4iOC4suC4geC4p+C4seC4h+C4p+C4meC5gOC4h+C4t+C5iOC4reC4meC5hOC4giAqLwoKICAgIC8qIOC4geC4suC4o+C5geC4quC4lOC4h+C4nOC4peC4guC4reC4h+C4geC4suC4o+C5geC4m+C4peC4h+C5gOC4peC4guC4kOC4suC4mSAxMCDguYDguJvguYfguJnguYDguKXguILguJDguLLguJkgMiovCiAgICAvKiBqID0gaSAtIDEg4LmB4Lil4Liw4LmD4Lir4LmJIGog4Lil4LiU4LiE4LmI4Liy4Lil4LiH4LiX4Li14Lil4LiwIDEgLi4uIOC4geC5h+C4hOC4t+C4reC4reC5iOC4suC4meC4guC5ieC4reC4oeC4ueC4peC4luC4reC4ouC4q+C4peC4seC4h+C4geC4peC4seC4muC5gOC4l+C5iOC4suC4meC4seC5ieC4meC5gOC4reC4h+C4hOC4o+C4seC4miAqLwogICAgLyog4LmA4Lie4Lij4Liy4Liw4LiV4Lix4Lin4LmB4Lib4Lij4LmB4Lia4LiaIEFycmF5IOC5g+C4meC4oOC4suC4qeC4siBDIOC4oeC4seC4meC5gOC4geC5h+C4muC4guC5ieC4reC4oeC4ueC4peC4iOC4suC4geC4i+C5ieC4suC4ouC5hOC4m+C4guC4p+C4siAqLwogICAgLyog4LiX4Liz4LmD4Lir4LmJIExTQiDguKHguLHguJnguYTguJvguK3guKLguLnguYjguJfguLLguIfguIvguYnguLLguKIg4Liq4LmI4Lin4LiZIE1TQiDguKHguLHguJnguYTguJvguK3guKLguLnguYjguJfguLLguIfguILguKfguLIgKi8KICAgIGZvcihqID0gaSAtIDE7IGogPj0gMDsgai0tKQogICAgICAgIHByaW50ZigiJWQiLCBiaXRbal0pOwoKcHJpbnRmKCJcbiIpOwpyZXR1cm4gMDsKCn0KCmNvbnN0IE1BWF9QTEFZRVJfTEVWRUwgPSA5OTk7IGNvbnN0IE1BWF9HVUlMRF9MRVZFTCA9IDUwMDsKCmNsYXNzIENoYXJhY3RlciB7IGNvbnN0cnVjdG9yKG5hbWUsIGpvYiwgZ2VuZGVyKSB7IHRoaXMubmFtZSA9IG5hbWU7IHRoaXMuam9iID0gam9iOyB0aGlzLmdlbmRlciA9IGdlbmRlcjsgdGhpcy5sZXZlbCA9IDE7IHRoaXMuZXhwID0gMDsgdGhpcy5ndWlsZCA9IG51bGw7IHRoaXMuaW52ZW50b3J5ID0gW107IHRoaXMucXVlc3RzID0gW107IHRoaXMub3V0Zml0ID0geyBoZWFkOiBudWxsLCBib2R5OiBudWxsLCBsZWdzOiBudWxsLCBhY2Nlc3Nvcnk6IG51bGwsIH07IH0KCmdhaW5FeHAoYW1vdW50KSB7IHRoaXMuZXhwICs9IGFtb3VudDsgd2hpbGUgKHRoaXMuZXhwID49IHRoaXMucmVxdWlyZWRFeHAoKSkgeyB0aGlzLmxldmVsVXAoKTsgfSB9CgpyZXF1aXJlZEV4cCgpIHsgcmV0dXJuIDEwMCArIHRoaXMubGV2ZWwgKiAyMDsgfQoKbGV2ZWxVcCgpIHsgaWYgKHRoaXMubGV2ZWwgPCBNQVhfUExBWUVSX0xFVkVMKSB7IHRoaXMubGV2ZWwrKzsgdGhpcy5leHAgPSAwOyBjb25zb2xlLmxvZygke3RoaXMubmFtZX0g4LmA4Lil4LmA4Lin4Lil4Lit4Lix4Lie4LmA4Lib4LmH4LiZICR7dGhpcy5sZXZlbH0pOyB9IH0KCmpvaW5HdWlsZChndWlsZCkgeyB0aGlzLmd1aWxkID0gZ3VpbGQ7IGd1aWxkLmFkZE1lbWJlcih0aGlzKTsgfQoKY2hhbmdlT3V0Zml0KHBhcnQsIGl0ZW0pIHsgaWYgKHRoaXMub3V0Zml0Lmhhc093blByb3BlcnR5KHBhcnQpKSB7IHRoaXMub3V0Zml0W3BhcnRdID0gaXRlbTsgY29uc29sZS5sb2coJHt0aGlzLm5hbWV9IOC5gOC4m+C4peC4teC5iOC4ouC4meC4iuC4uOC4lOC4quC5iOC4p+C4mSAke3BhcnR9IOC5gOC4m+C5h+C4mSAke2l0ZW19KTsgfSB9IH0KCmNsYXNzIEd1aWxkIHsgY29uc3RydWN0b3IobmFtZSwgZm91bmRlcikgeyB0aGlzLm5hbWUgPSBuYW1lOyB0aGlzLmxldmVsID0gMTsgdGhpcy5tZW1iZXJzID0gW107IHRoaXMucmFuayA9IDA7IHRoaXMuZGVjb3JhdGlvbnMgPSBbXTsgdGhpcy5mb3VuZGVyID0gZm91bmRlcjsgfQoKYWRkTWVtYmVyKGNoYXJhY3RlcikgeyB0aGlzLm1lbWJlcnMucHVzaChjaGFyYWN0ZXIpOyB9CgpnYWluR3VpbGRFeHAocG9pbnRzKSB7IGlmICh0aGlzLmxldmVsIDwgTUFYX0dVSUxEX0xFVkVMKSB7IHRoaXMubGV2ZWwgKz0gTWF0aC5mbG9vcihwb2ludHMgLyAxMDApOyB9IH0KCmRlY29yYXRlKGl0ZW0pIHsgdGhpcy5kZWNvcmF0aW9ucy5wdXNoKGl0ZW0pOyB9IH0KCmZ1bmN0aW9uIGNyZWF0ZUd1aWxkKG5hbWUsIGZvdW5kZXIpIHsgY29uc3QgbmV3R3VpbGQgPSBuZXcgR3VpbGQobmFtZSwgZm91bmRlcik7IGZvdW5kZXIuam9pbkd1aWxkKG5ld0d1aWxkKTsgcmV0dXJuIG5ld0d1aWxkOyB9CgpjbGFzcyBRdWVzdCB7IGNvbnN0cnVjdG9yKG5hbWUsIGRlc2NyaXB0aW9uLCByZXF1aXJlZEpvYiwgcmV3YXJkRXhwKSB7IHRoaXMubmFtZSA9IG5hbWU7IHRoaXMuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjsgdGhpcy5yZXF1aXJlZEpvYiA9IHJlcXVpcmVkSm9iOyB0aGlzLnJld2FyZEV4cCA9IHJld2FyZEV4cDsgfQoKY2FuQWNjZXB0KGNoYXJhY3RlcikgeyByZXR1cm4gdGhpcy5yZXF1aXJlZEpvYiA9PT0gbnVsbCB8fCBjaGFyYWN0ZXIuam9iID09PSB0aGlzLnJlcXVpcmVkSm9iOyB9Cgpjb21wbGV0ZShjaGFyYWN0ZXIpIHsgY2hhcmFjdGVyLmdhaW5FeHAodGhpcy5yZXdhcmRFeHApOyB9IH0KCmNsYXNzIER1bmdlb24geyBjb25zdHJ1Y3RvcihuYW1lLCByZXF1aXJlZExldmVsLCBib3NzTmFtZSwgcmV3YXJkSXRlbXMpIHsgdGhpcy5uYW1lID0gbmFtZTsgdGhpcy5yZXF1aXJlZExldmVsID0gcmVxdWlyZWRMZXZlbDsgdGhpcy5ib3NzTmFtZSA9IGJvc3NOYW1lOyB0aGlzLnJld2FyZEl0ZW1zID0gcmV3YXJkSXRlbXM7IH0KCmVudGVyKGNoYXJhY3RlcikgeyBpZiAoY2hhcmFjdGVyLmxldmVsID49IHRoaXMucmVxdWlyZWRMZXZlbCkgeyBjb25zb2xlLmxvZygke2NoYXJhY3Rlci5uYW1lfSDguYDguILguYnguLLguKrguLnguYjguJTguLHguJnguYDguIjguLXguYnguKLguJkgJHt0aGlzLm5hbWV9KTsgfSBlbHNlIHsgY29uc29sZS5sb2coIuC5gOC4peC5gOC4p+C4peC4ouC4seC4h+C5hOC4oeC5iOC4luC4tuC4h+C4quC4s+C4q+C4o+C4seC4muC4lOC4seC4meC5gOC4iOC4teC5ieC4ouC4meC4meC4teC5iSIpOyB9IH0gfQoKY2xhc3MgTWFya2V0IHsgY29uc3RydWN0b3IoKSB7IHRoaXMubGlzdGluZ3MgPSBbXTsgfQoKbGlzdEl0ZW0oc2VsbGVyLCBpdGVtLCBwcmljZSkgeyB0aGlzLmxpc3RpbmdzLnB1c2goeyBzZWxsZXIsIGl0ZW0sIHByaWNlIH0pOyBjb25zb2xlLmxvZygke3NlbGxlci5uYW1lfSDguKXguIfguILguLLguKIgJHtpdGVtfSDguKPguLLguITguLIgJHtwcmljZX0g4LmC4LiB4Lil4LiU4LmMKTsgfQoKYnV5SXRlbShidXllciwgaXRlbU5hbWUpIHsgY29uc3QgaW5kZXggPSB0aGlzLmxpc3RpbmdzLmZpbmRJbmRleChsID0+IGwuaXRlbSA9PT0gaXRlbU5hbWUpOyBpZiAoaW5kZXggIT09IC0xKSB7IGNvbnN0IGxpc3RpbmcgPSB0aGlzLmxpc3RpbmdzLnNwbGljZShpbmRleCwgMSlbMF07IGJ1eWVyLmludmVudG9yeS5wdXNoKGxpc3RpbmcuaXRlbSk7IGNvbnNvbGUubG9nKCR7YnV5ZXIubmFtZX0g4LiL4Li34LmJ4LitICR7bGlzdGluZy5pdGVtfSDguIjguLLguIEgJHtsaXN0aW5nLnNlbGxlci5uYW1lfSk7IH0gZWxzZSB7IGNvbnNvbGUubG9nKCLguYTguKHguYjguJ7guJrguYTguK3guYDguJfguYfguKHguYPguJnguJXguKXguLLguJQiKTsgfSB9IH0KCmNsYXNzIENoYXRTeXN0ZW0geyBjb25zdHJ1Y3RvcigpIHsgdGhpcy5wdWJsaWNDaGF0ID0gW107IHRoaXMuZ3VpbGRDaGF0cyA9IHt9OyB0aGlzLnByaXZhdGVDaGF0cyA9IHt9OyB9CgpzZW5kUHVibGljKG1lc3NhZ2UsIHNlbmRlcikgeyB0aGlzLnB1YmxpY0NoYXQucHVzaCh7IHNlbmRlciwgbWVzc2FnZSB9KTsgfQoKc2VuZEd1aWxkKGd1aWxkLCBtZXNzYWdlLCBzZW5kZXIpIHsgaWYgKCF0aGlzLmd1aWxkQ2hhdHNbZ3VpbGQubmFtZV0pIHRoaXMuZ3VpbGRDaGF0c1tndWlsZC5uYW1lXSA9IFtdOyB0aGlzLmd1aWxkQ2hhdHNbZ3VpbGQubmFtZV0ucHVzaCh7IHNlbmRlciwgbWVzc2FnZSB9KTsgfQoKc2VuZFByaXZhdGUoZnJvbSwgdG8sIG1lc3NhZ2UpIHsgY29uc3Qga2V5ID0gW2Zyb20ubmFtZSwgdG8ubmFtZV0uc29ydCgpLmpvaW4oIl8iKTsgaWYgKCF0aGlzLnByaXZhdGVDaGF0c1trZXldKSB0aGlzLnByaXZhdGVDaGF0c1trZXldID0gW107IHRoaXMucHJpdmF0ZUNoYXRzW2tleV0ucHVzaCh7IGZyb206IGZyb20ubmFtZSwgdG86IHRvLm5hbWUsIG1lc3NhZ2UgfSk7IH0gfQoKLy8gPT09IOC4leC4seC4p+C4reC4ouC5iOC4suC4h+C4geC4suC4o+C5g+C4iuC5ieC4h+C4suC4meC5gOC4muC4t+C5ieC4reC4h+C4leC5ieC4mSA9PT0gY29uc3Qga2F6dWtpID0gbmV3IENoYXJhY3RlcigiS2F6dWtpIiwgIuC4meC4seC4geC5gOC4p+C4l+C4ouC5jCIsICLguIrguLLguKIiKTsgY29uc3QgbWVmdSA9IG5ldyBDaGFyYWN0ZXIoIk1lZnUiLCAi4LiZ4Lix4LiB4Lie4Lik4LiB4Lip4Lio4Liy4Liq4LiV4Lij4LmMIiwgIuC4q+C4jeC4tOC4hyIpOwoKY29uc3QgbmFuaUd1aWxkID0gY3JlYXRlR3VpbGQoIk5hbmkgRGltZW5zaW9uIiwga2F6dWtpKTsKCmNvbnN0IGZsb3dlclF1ZXN0ID0gbmV3IFF1ZXN0KCLguIHguKXguLTguYjguJnguKvguK3guKHguILguK3guIfguKrguLHguJnguJXguLQiLCAi4LmA4LiB4LmH4Lia4LiB4Lil4Li14Lia4Lih4Li54LiZ4Lin4Li54LmJ4LiU4LiI4Liy4LiB4Lib4LmI4Liy4Lih4Li34LiUIiwgIuC4meC4seC4geC4nuC4pOC4geC4qeC4qOC4suC4quC4leC4o+C5jCIsIDUwMCk7IGlmIChmbG93ZXJRdWVzdC5jYW5BY2NlcHQobWVmdSkpIHsgZmxvd2VyUXVlc3QuY29tcGxldGUobWVmdSk7IH0KCmNvbnN0IGR1bmdlb24gPSBuZXcgRHVuZ2Vvbigi4LiW4LmJ4Liz4LiE4Liy4LmA4Lih4Lil4LmA4Lil4Li14LiiIiwgNDAsICJBcmxvIFZpa3VzIiwgWyLguIHguKXguLXguJrguITguLLguYDguKHguKXguYDguKXguLXguKIiXSk7IGR1bmdlb24uZW50ZXIoa2F6dWtpKTsKCmthenVraS5jaGFuZ2VPdXRmaXQoImhlYWQiLCAi4Lir4Lih4Lin4LiB4Lie4LmI4Lit4Lih4LiU4LmE4LifIik7IG1lZnUuY2hhbmdlT3V0Zml0KCJhY2Nlc3NvcnkiLCAi4LmA4LiC4LmH4Lih4LiB4Lil4Lix4LiU4LiU4Lit4LiB4LmE4Lih4LmJ4LmA4LiH4Li04LiZIik7Cgpjb25zdCBtYXJrZXQgPSBuZXcgTWFya2V0KCk7IG1hcmtldC5saXN0SXRlbShtZWZ1LCAi4LiU4Lit4LiB4LiE4Liy4LmA4Lih4Lil4LmA4Lil4Li14Lii4LiC4Liy4LinIiwgMTIwKTsgbWFya2V0LmJ1eUl0ZW0oa2F6dWtpLCAi4LiU4Lit4LiB4LiE4Liy4LmA4Lih4Lil4LmA4Lil4Li14Lii4LiC4Liy4LinIik7Cgpjb25zdCBjaGF0ID0gbmV3IENoYXRTeXN0ZW0oKTsgY2hhdC5zZW5kUHVibGljKCLguKLguLTguJnguJTguLXguJXguYnguK3guJnguKPguLHguJrguJzguLnguYnguIHguKXguYnguLLguJfguLjguIHguITguJkhIiwga2F6dWtpKTsgY2hhdC5zZW5kR3VpbGQobmFuaUd1aWxkLCAi4LiE4Li34LiZ4LiZ4Li14LmJ4Lil4LiH4LiU4Lix4LiZ4LiV4Li14Lia4Lit4LiqISIsIG1lZnUpOyBjaGF0LnNlbmRQcml2YXRlKGthenVraSwgbWVmdSwgIuC4nuC4o+C5ieC4reC4oeC4q+C4o+C4t+C4reC4ouC4seC4hz8iKTsKCg==
#include <stdio.h>
int main(void)
{
int i, j;
long dec; /* ให้รับค่าอินพุทแบบ Long Integer - เลขจำนวนเต็มแบบยาว */
int bit[32]; /* จองพื้นที่ในการเก็บข้อมูลเลขฐาน 2 ลงใน Array */
clrscr(); /* เคลียร์หน้าจอ */
printf("Decimal Number : "); /* แจ้งผู้ใช้เพื่อเตรียมป้อนค่าเลขฐาน 10 */
scanf("%ld", &dec); /* ต้องใช้ ld เพราะ Input มันเป็นแบบ Long Integer */
i = 0; /* กำหนดค่าเริ่มต้นของ Array */
/* ทำตามที่ได้ออกแบบโปรแกรมเอาไว้ ... ยังไงยังงั้นเลย 55555+ */
do {
bit[i++] = dec % 2; /* การหารเอาเศษ เพื่อให้เป็นคำตอบ */
/* การหารทั่วไป แต่ตัวแปร dec ของภาษา C มันเป็น Integer หรือ เลขจำนวนเต็ม */
/* ดังนั้นมันจึงตัดเศษ (หรือทศนิยม) ทิ้งไปโดยอัตโนมัติ */
dec = dec / 2;
} while (dec > 0); /* เงื่อนไขที่ทำจนกระทั่ง dec = 0 ก็ออกจากวังวนเงื่อนไข */
/* การแสดงผลของการแปลงเลขฐาน 10 เป็นเลขฐาน 2*/
/* j = i - 1 และให้ j ลดค่าลงทีละ 1 ... ก็คืออ่านข้อมูลถอยหลังกลับเท่านั้นเองครับ */
/* เพราะตัวแปรแบบ Array ในภาษา C มันเก็บข้อมูลจากซ้ายไปขวา */
/* ทำให้ LSB มันไปอยู่ทางซ้าย ส่วน MSB มันไปอยู่ทางขวา */
for(j = i - 1; j >= 0; j--)
printf("%d", bit[j]);
printf("\n");
return 0;
}
const MAX_PLAYER_LEVEL = 999; const MAX_GUILD_LEVEL = 500;
class Character { constructor(name, job, gender) { this.name = name; this.job = job; this.gender = gender; this.level = 1; this.exp = 0; this.guild = null; this.inventory = []; this.quests = []; this.outfit = { head: null, body: null, legs: null, accessory: null, }; }
gainExp(amount) { this.exp += amount; while (this.exp >= this.requiredExp()) { this.levelUp(); } }
requiredExp() { return 100 + this.level * 20; }
levelUp() { if (this.level < MAX_PLAYER_LEVEL) { this.level++; this.exp = 0; console.log(${this.name} เลเวลอัพเป็น ${this.level}); } }
joinGuild(guild) { this.guild = guild; guild.addMember(this); }
changeOutfit(part, item) { if (this.outfit.hasOwnProperty(part)) { this.outfit[part] = item; console.log(${this.name} เปลี่ยนชุดส่วน ${part} เป็น ${item}); } } }
class Guild { constructor(name, founder) { this.name = name; this.level = 1; this.members = []; this.rank = 0; this.decorations = []; this.founder = founder; }
addMember(character) { this.members.push(character); }
gainGuildExp(points) { if (this.level < MAX_GUILD_LEVEL) { this.level += Math.floor(points / 100); } }
decorate(item) { this.decorations.push(item); } }
function createGuild(name, founder) { const newGuild = new Guild(name, founder); founder.joinGuild(newGuild); return newGuild; }
class Quest { constructor(name, description, requiredJob, rewardExp) { this.name = name; this.description = description; this.requiredJob = requiredJob; this.rewardExp = rewardExp; }
canAccept(character) { return this.requiredJob === null || character.job === this.requiredJob; }
complete(character) { character.gainExp(this.rewardExp); } }
class Dungeon { constructor(name, requiredLevel, bossName, rewardItems) { this.name = name; this.requiredLevel = requiredLevel; this.bossName = bossName; this.rewardItems = rewardItems; }
enter(character) { if (character.level >= this.requiredLevel) { console.log(${character.name} เข้าสู่ดันเจี้ยน ${this.name}); } else { console.log("เลเวลยังไม่ถึงสำหรับดันเจี้ยนนี้"); } } }
class Market { constructor() { this.listings = []; }
listItem(seller, item, price) { this.listings.push({ seller, item, price }); console.log(${seller.name} ลงขาย ${item} ราคา ${price} โกลด์); }
buyItem(buyer, itemName) { const index = this.listings.findIndex(l => l.item === itemName); if (index !== -1) { const listing = this.listings.splice(index, 1)[0]; buyer.inventory.push(listing.item); console.log(${buyer.name} ซื้อ ${listing.item} จาก ${listing.seller.name}); } else { console.log("ไม่พบไอเท็มในตลาด"); } } }
class ChatSystem { constructor() { this.publicChat = []; this.guildChats = {}; this.privateChats = {}; }
sendPublic(message, sender) { this.publicChat.push({ sender, message }); }
sendGuild(guild, message, sender) { if (!this.guildChats[guild.name]) this.guildChats[guild.name] = []; this.guildChats[guild.name].push({ sender, message }); }
sendPrivate(from, to, message) { const key = [from.name, to.name].sort().join("_"); if (!this.privateChats[key]) this.privateChats[key] = []; this.privateChats[key].push({ from: from.name, to: to.name, message }); } }
// === ตัวอย่างการใช้งานเบื้องต้น === const kazuki = new Character("Kazuki", "นักเวทย์", "ชาย"); const mefu = new Character("Mefu", "นักพฤกษศาสตร์", "หญิง");
const naniGuild = createGuild("Nani Dimension", kazuki);
const flowerQuest = new Quest("กลิ่นหอมของสันติ", "เก็บกลีบมูนวู้ดจากป่ามืด", "นักพฤกษศาสตร์", 500); if (flowerQuest.canAccept(mefu)) { flowerQuest.complete(mefu); }
const dungeon = new Dungeon("ถ้ำคาเมลเลีย", 40, "Arlo Vikus", ["กลีบคาเมลเลีย"]); dungeon.enter(kazuki);
kazuki.changeOutfit("head", "หมวกพ่อมดไฟ"); mefu.changeOutfit("accessory", "เข็มกลัดดอกไม้เงิน");
const market = new Market(); market.listItem(mefu, "ดอกคาเมลเลียขาว", 120); market.buyItem(kazuki, "ดอกคาเมลเลียขาว");
const chat = new ChatSystem(); chat.sendPublic("ยินดีต้อนรับผู้กล้าทุกคน!", kazuki); chat.sendGuild(naniGuild, "คืนนี้ลงดันตีบอส!", mefu); chat.sendPrivate(kazuki, mefu, "พร้อมหรือยัง?");