Files
hakorune/examples/text_adventure/simple_rooms.nyash
Moe Charm 0bed0c0271 🎉 initial commit: Nyash Programming Language完成版
🚀 主要機能:
• Everything is Box哲学による革新的アーキテクチャ
• WebAssemblyブラウザー対応プレイグラウンド
• アーティスト協同制作デモ - 複数Boxインスタンス実証
• 視覚的デバッグシステム - DebugBox完全統合
• static box Mainパターン - メモリ安全設計

 言語機能:
• NOT/AND/OR/除算演算子完全実装
• ジェネリクス/テンプレートシステム
• 非同期処理(nowait/await)
• try/catchエラーハンドリング
• Canvas統合グラフィックス

🎨 ブラウザー体験:
• 9種類のインタラクティブデモ
• リアルタイムコード実行
• WebCanvas/WebConsole/WebDisplay
• モバイル対応完了

🤖 Built with Claude Code collaboration
Ready for public release!
2025-08-09 15:14:44 +09:00

190 lines
4.5 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Text Adventure Game - Simple Rooms Module (without MapBox)
// ルームシステムの簡単実装
include "text_adventure/items.nyash"
// 基本ルームBoxMapBoxなしのシンプル版
box Room {
init { name, description, visited, locked, item1, item2, item3, hasItems }
Room(name, description) {
me.name = name
me.description = description
me.visited = false
me.locked = false
me.item1 = false
me.item2 = false
me.item3 = false
me.hasItems = 0
}
// Getter methods to work around field access bug
getName() {
return me.name
}
getDescription() {
return me.description
}
isVisited() {
return me.visited
}
setVisited(v) {
me.visited = v
}
getItemCount() {
return me.hasItems
}
getItem1() {
return me.item1
}
getItem2() {
return me.item2
}
getItem3() {
return me.item3
}
// ルームの表示
look() {
result = ""
if me.isVisited() {
result = me.getName() + "\n"
} else {
result = me.getName() + " (First time here!)\n"
me.setVisited(true)
}
result = result + me.getDescription() + "\n"
// アイテムの表示
if me.getItemCount() > 0 {
result = result + "\nItems here:\n"
item1 = me.getItem1()
if item1 {
itemDisplay = item1.display()
result = result + "- " + itemDisplay + "\n"
}
item2 = me.getItem2()
if item2 {
itemDisplay = item2.display()
result = result + "- " + itemDisplay + "\n"
}
item3 = me.getItem3()
if item3 {
itemDisplay = item3.display()
result = result + "- " + itemDisplay + "\n"
}
}
return result
}
// アイテムを追加
addItem(item) {
if me.hasItems == 0 {
me.item1 = item
me.hasItems = 1
} else {
if me.hasItems == 1 {
me.item2 = item
me.hasItems = 2
} else {
if me.hasItems == 2 {
me.item3 = item
me.hasItems = 3
}
}
}
}
// アイテムを取得(削除)
takeItem(itemName) {
item1 = me.getItem1()
if item1 {
if item1.getName() == itemName {
result = item1
me.item1 = false
me.hasItems = me.hasItems - 1
return result
}
}
item2 = me.getItem2()
if item2 {
if item2.getName() == itemName {
result = item2
me.item2 = false
me.hasItems = me.hasItems - 1
return result
}
}
item3 = me.getItem3()
if item3 {
if item3.getName() == itemName {
result = item3
me.item3 = false
me.hasItems = me.hasItems - 1
return result
}
}
return false
}
// アイテムの存在確認
hasItem(itemName) {
item1 = me.getItem1()
if item1 {
if item1.getName() == itemName {
return true
}
}
item2 = me.getItem2()
if item2 {
if item2.getName() == itemName {
return true
}
}
item3 = me.getItem3()
if item3 {
if item3.getName() == itemName {
return true
}
}
return false
}
}
// シンプルワールド作成関数
function createSimpleWorld() {
// アイテム作成
sword = createSword()
potion = createPotion()
key = createKey("treasure_room")
treasure = createTreasure()
// ルーム作成
entrance = new Room("Entrance Hall", "A grand entrance with marble columns.")
armory = new Room("Old Armory", "A dusty armory with weapon racks.")
// アイテム配置
armory.addItem(sword)
entrance.addItem(potion)
entrance.addItem(key)
return entrance // スタート地点
}
print("🏰 Simple Rooms module loaded successfully!")