# Web3 Coding Adventure: First 3 Months as a Beginner Programmer

By [SOV3 🇸🇬🇳🇿](https://paragraph.com/@omniv3rse) · 2023-01-02

---

Hello world!

I've always been interested in technology and its potential to shape the future. That's why, after a decade working in digital marketing and project management, I decided it was time to dive into the world of `programming`. Two months ago, I enrolled in the Software Engineering Immersive course at General Assembly and have been loving every minute of it.

But learning to code is just one piece of the puzzle. That's why I was excited to participate in Buildspace's Nights & Weekends Season 2, a six-week program where 1,000 builders and entrepreneurs come together to ship something every day and build something amazing by the end.

Reflecting on my progress over the past three months has me feeling _so_ excited for what the future holds in 2023!

![My GitHub commits over the last 3 months](https://storage.googleapis.com/papyrus_images/9b99025a6b938a49026fad56d924086715033956174bd78bf00cdd8d742e2d5b.png)

My GitHub commits over the last 3 months

For our first project at GA, we were tasked with building a `JavaScript` game. I had always been interested in `Web3` technology, so I decided to create an NFT game.

After dedicating countless hours to game development and web3 programming tutorials on YouTube, I landed on the idea of a turn-based game where a hero battles a randomly-spawned opponent.

I was inspired by one of the GA assignments and wanted to take the concept further.

    // GA assignment
    
    // battle logic
    // calculate damange attack, received, and bonuses for damage and rewards
    // determine winner
    
    // - how would you model your `adventurer`? Your adventurer will want a **name** and **hitpoints**. What else would your adventurer need?
    let adventurer = {
        name: "Brian",
        hitpoints: 10,
    }
    // - how would you model an `ogre`? Your ogre will want **hitpoints**.
    let ogre = {
        hitpoints: 15,
    }
    
    // - Write a very small program that will simulate a battle between your adventurer and an ogre.
    function ogreAttacks() {
        adventurer.hitpoints -= 1;
    }
    
    function adventurerAttacks() {
        ogre.hitpoints -= 2;
    }
    
    function battle(adv, ogr) {
    
        console.log(`Battle starting with ADV @ ${adv.hitpoints} HP, and OGR @ ${ogr.hitpoints} HP`);
    
        while (adv.hitpoints > 0 && ogr.hitpoints > 0) { // both alive, continue game
            ogreAttacks(); // ogre attacks adv
            adventurerAttacks(); // adv attacks ogre
            console.log(`ADV has ${adv.hitpoints} HP, and OGR has ${ogr.hitpoints} HP`);
        }
    
        console.log(`Battle ended with ADV @ ${adv.hitpoints} HP, and OGR @ ${ogr.hitpoints} HP`);
    }
    
    battle(adventurer, ogre);
    

![One-liner explanation of Adv3nture.xyz](https://storage.googleapis.com/papyrus_images/f1566b6e36b9f100d6ac3d940dc83f7fe3bfa02b2584d707e83100c82388b1e3.png)

One-liner explanation of Adv3nture.xyz

To bring my game to life, I completed tutorials on `Vanilla JavaScript` top-down games and `web3.js` to display NFTs on a website.

Taking inspiration from the [@lootproject](https://twitter.com/lootproject), I edited the original `Loot.sol` contract and used the randomizer to generate character attributes like Strength, Agility, and Wisdom.

[https://opensea.io/assets/ethereum/0x4b8f5913f1dd81ae68ac8d332635cbb4c7436f2a/99](https://opensea.io/assets/ethereum/0x4b8f5913f1dd81ae68ac8d332635cbb4c7436f2a/99)

In my game, players could mint a free Adv3nturer (ADV) NFT and use it to generate an in-game character with the corresponding attribute stats stored in the NFT's metadata.

I called the game [Adv3nture Island](https://github.com/sov3333/adventurer-game/tree/master/game) -- a top-down Pokemon-style RPG game.

![Adv3nture Island game demo](https://storage.googleapis.com/papyrus_images/a940628e2a0dc575e20af5bafe0c160cea46c8c615ed0b61aada5e9080d1c6fc.gif)

Adv3nture Island game demo

After 3 weeks of building and testing, I finally released the [first collection of 1,000 Adv3nturers](https://opensea.io/collection/adventurer-eth) on Ethereum Mainnet and was amazed when they minted out within 12 hours. 🤯 I also introduced the $GOLD token, allowing players to claim 1,000 $GOLD for every NFT they owned.

The entire process of bringing my game idea to life and getting it off localhost was a _truly_ magical experience. 💫

[https://twitter.com/sov3333/status/1599667440577056768](https://twitter.com/sov3333/status/1599667440577056768)

And things really started to take off when GOLD/ETH was listed on Uniswap and people began buying the $GOLD token. Within 48 hours, over 500 people had flooded into the [@adv3nturers telegram group](https://t.me/adv3nturers).

![Chart of first 24h of $GOLD price (USD)](https://storage.googleapis.com/papyrus_images/dff355a5689a8eab367983f0c902e5c84c24892aff9d9cc9fb354f7c0e42b995.png)

Chart of first 24h of $GOLD price (USD)

And that's how [Adv3nture.xyz](https://adv3nture.xyz) was born.

![Adv3nture.xyz](https://storage.googleapis.com/papyrus_images/9be22193be8f01a1456829c9470aaf1aeb80de66cdab4a8b529cb48c4cd9d558.png)

Adv3nture.xyz

As for where this journey will take me, I'm not quite sure. But that's the most exciting part of any adventure, isn't it? The unknown.

Over the next four weeks, I'll be focusing on Adv3nture.xyz and seeing where it leads me. Thank you for following along on my coding adventure so far.

Who knows what the future holds? Let's find out together!

> _"The biggest adventures often start with a single step into the unknown, into unexpected places" - Christopher Paolini_

![A magical adventure awaits.](https://storage.googleapis.com/papyrus_images/708157da113ff2ac41adfafeca59baae276be839fd1d9126d785b425307ce0bd.png)

A magical adventure awaits.

---

*Originally published on [SOV3 🇸🇬🇳🇿](https://paragraph.com/@omniv3rse/web3-coding-adventure-first-3-months-as-a-beginner-programmer)*
