|
1 | 1 | ---
|
2 | 2 | layout: page
|
3 |
| -title: project 5 |
4 |
| -description: a project with a background image |
| 3 | +title: Piracy RPG |
| 4 | +description: A strategic naval exploration and combat game with procedural generation and advanced software design patterns |
5 | 5 | img: assets/img/1.jpg
|
6 | 6 | importance: 3
|
7 |
| -category: fun |
| 7 | +category: uni |
8 | 8 | ---
|
9 | 9 |
|
10 |
| -Every project has a beautiful feature showcase page. |
11 |
| -It's easy to include images in a flexible 3-column grid format. |
12 |
| -Make your photos 1/3, 2/3, or full width. |
13 |
| - |
14 |
| -To give your project a background in the portfolio page, just add the img tag to the front matter like so: |
15 |
| - |
16 |
| - --- |
17 |
| - layout: page |
18 |
| - title: project |
19 |
| - description: a project with a background image |
20 |
| - img: /assets/img/12.jpg |
21 |
| - --- |
22 |
| - |
23 |
| -<div class="row"> |
24 |
| - <div class="col-sm mt-3 mt-md-0"> |
25 |
| - {% include figure.liquid loading="eager" path="assets/img/1.jpg" title="example image" class="img-fluid rounded z-depth-1" %} |
26 |
| - </div> |
27 |
| - <div class="col-sm mt-3 mt-md-0"> |
28 |
| - {% include figure.liquid loading="eager" path="assets/img/3.jpg" title="example image" class="img-fluid rounded z-depth-1" %} |
29 |
| - </div> |
30 |
| - <div class="col-sm mt-3 mt-md-0"> |
31 |
| - {% include figure.liquid loading="eager" path="assets/img/5.jpg" title="example image" class="img-fluid rounded z-depth-1" %} |
32 |
| - </div> |
33 |
| -</div> |
34 |
| -<div class="caption"> |
35 |
| - Caption photos easily. On the left, a road goes through a tunnel. Middle, leaves artistically fall in a hipster photoshoot. Right, in another hipster photoshoot, a lumberjack grasps a handful of pine needles. |
36 |
| -</div> |
37 |
| -<div class="row"> |
38 |
| - <div class="col-sm mt-3 mt-md-0"> |
39 |
| - {% include figure.liquid loading="eager" path="assets/img/5.jpg" title="example image" class="img-fluid rounded z-depth-1" %} |
40 |
| - </div> |
41 |
| -</div> |
42 |
| -<div class="caption"> |
43 |
| - This image can also have a caption. It's like magic. |
44 |
| -</div> |
45 |
| - |
46 |
| -You can also put regular text between your rows of images. |
47 |
| -Say you wanted to write a little bit about your project before you posted the rest of the images. |
48 |
| -You describe how you toiled, sweated, _bled_ for your project, and then... you reveal its glory in the next row of images. |
49 |
| - |
50 |
| -<div class="row justify-content-sm-center"> |
51 |
| - <div class="col-sm-8 mt-3 mt-md-0"> |
52 |
| - {% include figure.liquid path="assets/img/6.jpg" title="example image" class="img-fluid rounded z-depth-1" %} |
53 |
| - </div> |
54 |
| - <div class="col-sm-4 mt-3 mt-md-0"> |
55 |
| - {% include figure.liquid path="assets/img/11.jpg" title="example image" class="img-fluid rounded z-depth-1" %} |
56 |
| - </div> |
57 |
| -</div> |
58 |
| -<div class="caption"> |
59 |
| - You can also have artistically styled 2/3 + 1/3 images, like these. |
60 |
| -</div> |
61 |
| - |
62 |
| -The code is simple. |
63 |
| -Just wrap your images with `<div class="col-sm">` and place them inside `<div class="row">` (read more about the <a href="https://getbootstrap.com/docs/4.4/layout/grid/">Bootstrap Grid</a> system). |
64 |
| -To make images responsive, add `img-fluid` class to each; for rounded corners and shadows use `rounded` and `z-depth-1` classes. |
65 |
| -Here's the code for the last row of images above: |
66 |
| - |
67 |
| -{% raw %} |
68 |
| - |
69 |
| -```html |
70 |
| -<div class="row justify-content-sm-center"> |
71 |
| - <div class="col-sm-8 mt-3 mt-md-0"> |
72 |
| - {% include figure.liquid path="assets/img/6.jpg" title="example image" class="img-fluid rounded z-depth-1" %} |
73 |
| - </div> |
74 |
| - <div class="col-sm-4 mt-3 mt-md-0"> |
75 |
| - {% include figure.liquid path="assets/img/11.jpg" title="example image" class="img-fluid rounded z-depth-1" %} |
76 |
| - </div> |
77 |
| -</div> |
| 10 | +## `Seas of Fortune` - Pirate RPG Adventure 🏴☠️ |
| 11 | + |
| 12 | +> Set sail on a digital voyage where strategy, exploration, and learning collide. Navigate dangerous waters, engage in tactical battles, and uncover procedurally generated island mysteries! |
| 13 | +
|
| 14 | +### `Game Concept` |
| 15 | + |
| 16 | +*Seas of Fortune* is more than a game—it’s a showcase of advanced software engineering, built with `C#` and `.NET`. It demonstrates cutting-edge design patterns and AI techniques to deliver a rich and immersive pirate adventure. |
| 17 | + |
| 18 | +### `Technical Architecture` |
| 19 | + |
| 20 | +#### Advanced Design Patterns 🧩 |
| 21 | + |
| 22 | +The game incorporates essential software design patterns: |
| 23 | +- **Singleton**: Centralized control for core systems |
| 24 | +- **State**: Smooth handling of game states and transitions |
| 25 | +- **Strategy**: Flexible combat and AI decision-making |
| 26 | +- **Command**: Modular, extensible input handling |
| 27 | +- **Factory & Abstract Factory**: Dynamic generation of game entities, islands, and battles |
| 28 | + |
| 29 | +#### Artificial Intelligence Integration 🤖 |
| 30 | + |
| 31 | +*Seas of Fortune* raises the bar for game AI: |
| 32 | +- Adaptive enemy behavior |
| 33 | +- Procedural generation of intelligent, context-aware game worlds |
| 34 | +- Strategic NPC pathfinding and decision-making |
| 35 | + |
| 36 | +### `Feature Highlights` |
| 37 | + |
| 38 | +#### Learn Vim While You Sail! 🧭📚 |
| 39 | + |
| 40 | +Master efficient navigation with our Vim-inspired HJKL control system: |
| 41 | +- **H**: Sail West ← |
| 42 | +- **J**: Head South ↓ |
| 43 | +- **K**: Navigate North ↑ |
| 44 | +- **L**: Explore East → |
| 45 | + |
| 46 | +**Why it’s innovative:** |
| 47 | +- Build Vim navigation skills naturally through gameplay |
| 48 | +- Train muscle memory for efficient keyboard movement |
| 49 | +- Turn controls into practical coding skills for text editors and IDEs |
| 50 | + |
| 51 | +By the end of your pirate journey, you’ll unconsciously master Vim-style navigation—an invaluable tool for developers and power users alike! |
| 52 | + |
| 53 | +### `Page Layouts` |
| 54 | + |
| 55 | +##### Exploration Interface |
| 56 | +``` |
| 57 | + ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
| 58 | + |
| 59 | + ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
| 60 | + |
| 61 | + ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
| 62 | + |
| 63 | + ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
| 64 | + |
| 65 | + ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
| 66 | + |
| 67 | + ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ L ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
| 68 | + |
| 69 | + ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
| 70 | + |
| 71 | + ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
| 72 | + |
| 73 | + ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ B ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
| 74 | + |
| 75 | + ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ L ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
| 76 | + |
| 77 | + ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
| 78 | + |
| 79 | + ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
| 80 | + |
| 81 | + ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ F ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
| 82 | + |
| 83 | + ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
| 84 | + |
| 85 | + ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
| 86 | + |
| 87 | +Move the player ship (HJLK) or press Q to quit: |
| 88 | +``` |
| 89 | + |
| 90 | +##### Combat Interface |
| 91 | +``` |
| 92 | +[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ] |
| 93 | +[ ][ ][@][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ] |
| 94 | +[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][E][E][I][ ] |
| 95 | +[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][E][ ][ ][ ] |
| 96 | +[ ][ ][ ][A][ ][ ][ ][ ][ ][ ][ ][ ][E][ ][ ] |
| 97 | +[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ] |
| 98 | +[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][E][ ][ ] |
| 99 | +[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ] |
| 100 | +[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ] |
| 101 | +[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ] |
| 102 | +[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ] |
| 103 | +[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ] |
| 104 | +[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][E][ ][ ] |
| 105 | +[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][I] |
| 106 | +[ ][ ][ ][ ][ ][ ][I][ ][ ][ ][ ][ ][ ][ ][ ] |
| 107 | +
|
| 108 | +Combat Log: |
| 109 | +Reward: 1500 Gold |
| 110 | +Reward: 60 Reputation |
| 111 | +Captain Jack Sparrow moved to position (1, 1) |
| 112 | +Captain Jack Sparrow moved to position (2, 1) |
| 113 | +Crewman Gibbs obtained Intricate Map. |
| 114 | +
|
| 115 | +Ship 1 Crew: |
| 116 | +Captain Jack Sparrow: HP 100/100 | SP 100/100 | MP 50/50 |
| 117 | +Crewman Gibbs: HP 100/100 | SP 100/100 | MP 50/50 |
| 118 | +
|
| 119 | +Ship 2 Crew: |
| 120 | +Davy Jones: HP 100/100 | SP 100/100 | MP 50/50 |
| 121 | +Bootstrap Bill: HP 100/100 | SP 100/100 | MP 50/50 |
| 122 | +Bill Turner: HP 100/100 | SP 100/100 | MP 50/50 |
| 123 | +Maccus: HP 100/100 | SP 100/100 | MP 50/50 |
| 124 | +Clanker: HP 100/100 | SP 100/100 | MP 50/50 |
| 125 | +Victor: HP 100/100 | SP 100/100 | MP 50/50 |
| 126 | +
|
| 127 | +Current Action: Heal |
| 128 | +Current State: Action |
| 129 | +Stamina: 100/100 |
| 130 | +Magic Points: 50/50 |
| 131 | +Ammunition: 1 |
| 132 | +
|
| 133 | +Actions: |
| 134 | +1-4: Select action strategy |
| 135 | +HJKL: Move |
| 136 | +SPACE: Perform current action |
| 137 | +D: Enter defending state |
| 138 | +I: View Inventory |
| 139 | +E: Open Equipment Menu |
| 140 | +Q: Quit combat |
| 141 | +O: View Quests |
78 | 142 | ```
|
79 | 143 |
|
80 |
| -{% endraw %} |
| 144 | +### `Conclusion and Reflection` |
| 145 | + |
| 146 | +Developing *Seas of Fortune* has been a rewarding journey in software engineering and game design, showcasing how advanced programming patterns and AI techniques can create an immersive and adaptable gaming experience. |
| 147 | + |
| 148 | +Explore the technical implementation and adventures here: |
| 149 | +- **[Seas of Fortune GitHub Repository](https://github.com/Andebugulin/rpg_pirates)** |
| 150 | + |
| 151 | +### `Fancy Feature: Procedural Generation Magic` |
| 152 | + |
| 153 | +The game’s core magic lies in its procedural generation system: |
| 154 | +- Dynamic islands with detailed, context-aware terrains |
| 155 | +- AI-driven quests that adapt to player actions |
| 156 | +- Unpredictable, intelligent enemy encounters |
| 157 | + |
| 158 | +Every playthrough delivers a unique, player-driven experience. |
| 159 | + |
| 160 | +### `Learning Through Play` |
| 161 | + |
| 162 | +*Seas of Fortune* blends fun with learning: |
| 163 | +- Master advanced design patterns through gameplay |
| 164 | +- Explore AI and procedural generation techniques |
| 165 | +- Build strategic thinking with complex game mechanics |
| 166 | + |
| 167 | +Who said software engineering can’t feel like an epic pirate adventure? 🌊🏴☠️ |
| 168 | + |
| 169 | +### `Contributors` |
| 170 | + |
| 171 | +<div id="contributors-list" style="display: flex; flex-wrap: wrap; justify-content: space-around; padding: 20px;">Loading contributors...</div> |
| 172 | +<script> |
| 173 | + async function fetchContributors() { |
| 174 | + const url = 'https://api.github.com/repos/Andebugulin/rpg_pirates/contributors'; |
| 175 | + const response = await fetch(url); |
| 176 | + const contributors = await response.json(); |
| 177 | + |
| 178 | + const contributorsHtml = contributors.map(contributor => |
| 179 | + `<div class="contributor" style="margin: 10px; text-align: center;"> |
| 180 | + <img src="${contributor.avatar_url}" alt="${contributor.login}" style="width: 100px; height: 100px; border-radius: 50%; display: block; margin: auto;"> |
| 181 | + <p><a href="${contributor.html_url}" target="_blank">${contributor.login}</a></p> |
| 182 | + </div>` |
| 183 | + ).join(''); |
| 184 | + |
| 185 | + document.getElementById('contributors-list').innerHTML = contributorsHtml; |
| 186 | + } |
| 187 | + |
| 188 | + fetchContributors(); |
| 189 | +</script> |
| 190 | + |
0 commit comments