首页
网站开发
桌面应用
管理软件
微信开发
App开发
嵌入式软件
工具软件
数据采集与分析
其他
首页
>
> 详细
辅导Java,CS编程、讲解Python编程语言、c++,Java程序辅导 讲解R语言编程|辅导Web开发
项目预算:
开发周期:
发布时间:
要求地区:
Monster Trading Cards Game
This HTTP/REST-based server is built to be a platform for trading and battling with
and against each other in a magical card-game world.
a user is a registered player with credentials (unique username, password).
a user can manage his cards.
a card consists of: a name and multiple attributes (damage, element type).
a card is either a spell card or a monster card.
a user has multiple cards in his stack.
a stack is the collection of all his current cards (hint: cards can be removed
by trading).
a user can buy cards by acquiring packages.
a package consists of 5 cards and can be acquired from the server by paying 5
virtual coins.
every user has 20 coins to buy (4) packages.
the best 4 cards are selected by the user to be used in the deck.
the deck is used in the battles against other players.
a battle is a request to the server to compete against another user with your
currently defined deck (see detail description below).
Setup
Users can
register and login (token based) to the server,
acquire some cards,
define a deck of monsters/spells and
battle against each other.
Hereby you can trade cards to have better chances to win (see detail description
below). The data should be persisted in a postgreSQL database.
Further features:
scoreboard / user stats
editable profile page
user stats
ELO (+3 points for win, -5 for loss, starting value: 100; higher
sophisticated ELO system welcome)
Security
A token-based login should be implemented (see: curl script "authorization"-header).
During the registration process (not perfect, but to keep the project simple) a token
is generated which needs to be checked at each call on the server-side (also
identifies the user).
To keep the token usage simple we geneate the token with simply adding a string "-
mtcgToken" to the user name.
User: "altenhof" Token: "{Username}-mtcgToken" (Monster Trading Card Game Token)
HTTP-Header to add on the client: "Authorization: Basic altenhof-mtcgToken"
HandIns
Create an application in Java or C# to spawn a REST-based (HTTP) server that acts as
an API for possible frontends (WPF, JavaFX, Web, console). The frontend is not part of
this project! You are not allowed to use any helper framework for the HTTP
communication, but you are allowed to use nuget/mvn-packages for serialization of
objects into strings (vice versa). Test your application with the provided curl script
(integration test) and add unit tests (~20+) to verify your application code.
Add a unique feature to your solution e.g.: additional booster for 1 round to 1 card,
spells... (be creative) Keep in mind: you are not allowed to change the pre-defined
REST-API calls (don't do breaking changes) as defined in the curl script (but you can
add further calls, but don't depend on them; the further calls need to be optional!).
Hand in the last version of your source code as a zip in moodle (legal issue) with a
README.txt (or md)-file pointing to your git-repository.
Add a protocol as plain-text file (txt or md) with the following content:
protocol about the technical steps you made (designs, failures and selected
solutions)
explain why these unit tests are chosen and why the tested code is critical
track the time spent with the project
consider that the git-history is part of the documentation (no need to copy it
into the protocol)
Intermediate Submissions
Be able to present your solution during the course (in the exercise lessons (de:
Übungen)) at the beamer.
Goals:
after lesson 1 (OOP):
Choose a language (C# or Java) and get your environment up and running.
Start creating the business layer and design/develop the corresponding
classes.
Test with command line.
after lesson 2 (Testing):
Check your code and add unit tests to critical parts of your
implementation.
Explain the difference between unit testing and the usage of the curl
script.
Implement register / login and the user profile methods with focus on
security (see the "Authorization" headers in the scripts) and test these
aspects using unit tests.
after lesson 3 (Networking / Parallel Execution):
Implement the TCP-Communication over HTTP and be able to communicate
with the testing script provided.
The server should be able to read the most important headers and read
the body correctly.
Consider parallel execution here and prepare a method to test this
(e.g.: console.log and parallel running curl scripts).
after lesson 4 (Collections / Files / Streams):
Explain which collection type is chosen for each purpose and why (add
this to your protocol to hand-in)
Implement the package and card (+deck) handling
after lesson 5 (Json, Databases):
Implement the trading possibility.
store all relevant data in the database (use SQL only; no O/R-Mappers
allowed).
after theory lesson 6 (Recap):
implement further requirements (90% of the project should be finished)
Consider that theory questions are asked and that these intermediate presentations are
graded as well. Always be prepared to test edge-cases and to extend your curl script
for the given purpose, BUT be prepared that the curl script can be extended by the
lecturers as well (new versions might test further error cases eg: check for invalid
decks).
The Battle Logic
Your cards are split into 2 categories:
monster cards
cards with active attacks and damage based on an element type (fire, water,
normal). The element type does not effect pure monster fights.
spell cards
a spell card can attack with an element based spell (again fire, water, normal)
which is either
effective (eg: water is effective against fire, so damage is doubled)
not effective (eg: fire is not effective against water, so damage is
halved)
no effect (eg: normal monster vs normal spell, no change of damage,
direct comparison between damages)
Effectiveness:
water -> fire
fire -> normal
normal -> water
The starting player is chosen randomly. Cards are chosen randomly each round from the
deck to compete (this means 1 round is a battle of 2 cards = 1 of each player). Pure
monster fights are not affected by the element type. As soon as 1 spell cards is
played the element type has an effect on the damage calculation of this single round.
Each round the card with higher calculated damage wins. In case of a draw the
attacking card loses the round. Defeated monsters/spells of the competitor are removed
from the competitor's deck and are taken over in the deck of the current player (vice
versa). Because endless loops are possible we limit the count of rounds to 100.
As a result of the battle we want to return a log which describes the battle in great
detail. Afterwards the stats need to be updated (count of games played and ELO
calculation). Attention: both players must be actively involved (open call to server)
in the game (blocking call) to compete against each other.
The following specialties are to consider:
Goblins are too afraid of Dragons to attack.
Wizzard can control Orks so they are not able to damage them.
The armor of Knights is so heavy that WaterSpells make them drown them
instantly.
The Kraken is immune against spells.
The FireElves know Dragons since they were little and can evade their attacks.
(Use inheritance to solve this problem)
Trading Deals
You can request a trading deal by pushing a card into the store (MUST NOT BE IN THE
DECK and is locked for the deck in further usage) and add a requirement for the card
to trade with (eg: "spell or monster" and "min-damage: 50"). Define: Spell or Monster
and additionally a type requirement or a minimum damage.
Optional Features
With optional features implemented you can compensate possible errors in the
implementation above. Nevertheless it is not possible to exceed the maximum number of
points (= 100%).
Trading system: trade cards vs coins
Further card classes (eg: trap cards ~ passive spells)
Further element types (eg: ice, wind,...) including additional dependencies
Friends-List (play against friends from list, manage friends by username)
Card Description
Extended Scoreboard: see ELO or WHR
be able to add virtual coins to your system (with stats on spent coins)
transaction history
define a plugin system to extend monsters (needed skills: reflection;
dependency injection, service locator)
软件开发、广告设计客服
QQ:99515681
邮箱:99515681@qq.com
工作时间:8:00-23:00
微信:codinghelp
热点项目
更多
代写math 1151, autumn 2024 w...
2024-11-14
代做comp4336/9336 mobile dat...
2024-11-14
代做eesa01 lab 2: weather an...
2024-11-14
代写comp1521 - 24t3 assignme...
2024-11-14
代写nbs8020 - dissertation s...
2024-11-14
代做fin b377f technical anal...
2024-11-14
代做ceic6714 mini design pro...
2024-11-14
代做introduction to computer...
2024-11-14
代做cs 353, fall 2024 introd...
2024-11-14
代做phy254 problem set #3 fa...
2024-11-14
代写n1569 financial risk man...
2024-11-14
代写csci-ua.0202 lab 3: enco...
2024-11-14
代写econ2226: chinese econom...
2024-11-14
热点标签
mktg2509
csci 2600
38170
lng302
csse3010
phas3226
77938
arch1162
engn4536/engn6536
acx5903
comp151101
phl245
cse12
comp9312
stat3016/6016
phas0038
comp2140
6qqmb312
xjco3011
rest0005
ematm0051
5qqmn219
lubs5062m
eee8155
cege0100
eap033
artd1109
mat246
etc3430
ecmm462
mis102
inft6800
ddes9903
comp6521
comp9517
comp3331/9331
comp4337
comp6008
comp9414
bu.231.790.81
man00150m
csb352h
math1041
eengm4100
isys1002
08
6057cem
mktg3504
mthm036
mtrx1701
mth3241
eeee3086
cmp-7038b
cmp-7000a
ints4010
econ2151
infs5710
fins5516
fin3309
fins5510
gsoe9340
math2007
math2036
soee5010
mark3088
infs3605
elec9714
comp2271
ma214
comp2211
infs3604
600426
sit254
acct3091
bbt405
msin0116
com107/com113
mark5826
sit120
comp9021
eco2101
eeen40700
cs253
ece3114
ecmm447
chns3000
math377
itd102
comp9444
comp(2041|9044)
econ0060
econ7230
mgt001371
ecs-323
cs6250
mgdi60012
mdia2012
comm221001
comm5000
ma1008
engl642
econ241
com333
math367
mis201
nbs-7041x
meek16104
econ2003
comm1190
mbas902
comp-1027
dpst1091
comp7315
eppd1033
m06
ee3025
msci231
bb113/bbs1063
fc709
comp3425
comp9417
econ42915
cb9101
math1102e
chme0017
fc307
mkt60104
5522usst
litr1-uc6201.200
ee1102
cosc2803
math39512
omp9727
int2067/int5051
bsb151
mgt253
fc021
babs2202
mis2002s
phya21
18-213
cege0012
mdia1002
math38032
mech5125
07
cisc102
mgx3110
cs240
11175
fin3020s
eco3420
ictten622
comp9727
cpt111
de114102d
mgm320h5s
bafi1019
math21112
efim20036
mn-3503
fins5568
110.807
bcpm000028
info6030
bma0092
bcpm0054
math20212
ce335
cs365
cenv6141
ftec5580
math2010
ec3450
comm1170
ecmt1010
csci-ua.0480-003
econ12-200
ib3960
ectb60h3f
cs247—assignment
tk3163
ics3u
ib3j80
comp20008
comp9334
eppd1063
acct2343
cct109
isys1055/3412
math350-real
math2014
eec180
stat141b
econ2101
msinm014/msing014/msing014b
fit2004
comp643
bu1002
cm2030
联系我们
- QQ: 9951568
© 2021
www.rj363.com
软件定制开发网!