-
Notifications
You must be signed in to change notification settings - Fork 0
/
Merchant.nim
144 lines (113 loc) · 3.58 KB
/
Merchant.nim
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
import db, terminal
type
End = enum
None, Win, Lose
var
endGame:End
money = 100
inventory*: seq[Item];
include gameHelper
include gameHello
var i: int = 0
while endGame == End.None:
eraseScreen(stdin)
setCursorPos(stdin, 0, 0)
var (classType, want, item) = getRandomClient()
echo "У Вас новый клиент! (Ход: ", i, ")"
echo "Класс: ", classType.name
case want
of Want.Buy: echo "Покупает: ", item.name
of Want.Sell: echo "Продает: ", item.name
echo "============================="
echo ""
echo "У вас ", money, " монет"
let itemIndex = findInInvetory(item)
let costSell = item.cost + (0.1 * item.cost.toFloat).toInt
case want
of Want.Buy:
if itemIndex != -1:
echo "[X] Продать ",item.name," за ", costSell
else:
echo "У вас нет предмета ", item.name
of Want.Sell:
if(money-item.cost > 0):
if inventory.len < 10:
echo "[X] Купить ",item.name," за ", item.cost
else: echo "Инвентарь заполнен"
else: echo "Не хватает монет"
echo "[C] Отказаться"
echo ""
showInventory()
var isSelled, isBuyed = false
while true:
var input:char
try:
input = getch()
except:
echo "Используйте другую раскладку клавиатуры"
case input:
of 'X', 'x':
if want == Want.Sell:
if money - item.cost > 0 and inventory.len < 10:
money -= item.cost
isBuyed = true
# if money <= 0 : endGame = End.Lose
inventory.add(item)
else:continue
else:
if itemIndex != -1:
money += costSell
isSelled = true
if money >= 200 : endGame = End.Win
inventory.del(itemIndex)
else:continue
# echo "Монет: ", money
break
of 'C', 'c':
break
else:
continue
eraseScreen(stdin)
setCursorPos(stdin, 0, 0)
inc(i)
if isBuyed or isSelled:
if isSelled:
echo "Вы продали ", item.name, " за ", costSell, " монет"
elif isBuyed:
echo "Вы купили ", item.name, " за ", item.cost, " монет"
echo "Итого монет: ", money
echo ""
if(i mod 10) == 0 and i != 0:
money -= 20
echo "Вы заплатили налог в 20 золотых!"
echo ""
if money <= 0 :
endGame = End.Lose
break
let costIncrease:int = rand(10)-5
var item = db_items.random()
item.costMin += costIncrease
item.costMax += costIncrease
if item.costMin < 1: item.costMin = 1
if item.costMax < 1: item.costMax = 1
echo "Цена предмета \"", item.name,"\" изменилась на ", costIncrease
echo ""
echo "Нажмите любую клавишу, чтобы продолжить"
try:
discard getch()
except:
echo "Используйте другую раскладку клавиатуры"
eraseScreen(stdin)
setCursorPos(stdin, 0, 0)
case endGame:
of End.Win:
echo "Вы богач! Вы неплохо обращаетесь с деньгами!"
of End.Lose:
echo "Вы банкрот! Вы совсем не умеете обращаться с деньгами..."
else:
echo "Что-то пошло не так... Сообщите разработчику"
echo "Нажмите на любую клавишу, чтобы завершить программу"
try:
discard getch()
except:
echo ""