Giter Site home page Giter Site logo

vyperfun / vyper.fun Goto Github PK

View Code? Open in Web Editor NEW
115.0 9.0 54.0 1.96 MB

Cryptozombies for Vyper: Learn Vyper by building games!

Home Page: https://learn.vyperlang.org/

License: MIT License

JavaScript 30.09% CSS 9.98% HTML 59.93%
vyper smart-contracts ethereum tutorials tutorials-platfrom learning-exercise hacktoberfest

vyper.fun's Introduction

Vyper Tutorials

Learn Vyper by building a Pokemon Game!

What is this?

This is an interactive tutorial website for learning Vyper while building games using smart contracts, similar to Cryptozombies.

Running tutorials locally

  1. Clone the repo:
git clone https://github.com/vyperfun/vyper.fun
  1. Download and Install Node.js.

  2. Install docsify globally.

// you may need to use sudo
npm i docsify-cli -g
  1. Run the tutorial locally.
docsify serve .

Contribution Guide

We're constantly in need of volunteers to help translate vyper.fun!

Given that Vyper.fun is a global project, we believe it's critical that Vyper.fun is accessible to everyone, regardless of their nationality or language. Our community has been working hard to make this vision a reality but we could use your help!

How to get involved

Check out contribution guide for instructions on how to get started as a translator. Don't see your language listed? Please comment here & we'll help get you set up.

Join our Discord server for collaboration & support.

Contributors

Forked from SubstrateKitties, the awesome substrate tutorial. Substrate is a modular framework that enables you to create purpose-built blockchains by composing custom or pre-built components. It also includes smart-contract bricks offering access to others languages, including Rust.

Thanks goes to these 109 wonderful people (emoji key):


Just some guy

πŸ‘€Β πŸ’΅

Ben Hauser

πŸ’΅

Defi Dad

πŸ’΅

Andre Cronje

πŸ’΅

spencernoon

πŸ’΅

sassal

πŸ’΅

banteg

πŸ’΅

milkyklim

πŸ’΅

vasa

πŸ’»

Nichanan Kesonpat

πŸ‘€Β πŸ’΅

jacqueswww

πŸ’΅

Shrutirupa

πŸ‘€

Chloe Lewis

πŸ‘€Β πŸ’΅

Anett Rolikova

πŸ’΅

Julien Eluard

πŸ’»

Ricardo Rius

πŸ‘€

slayorktc

πŸ’΅

kingjacob

πŸ’΅

scco

πŸ’΅

apguerrera

πŸ’΅

dsommer123

πŸ’΅

harshrajat

πŸ’΅

troopaloop8

πŸ’΅

wmpea

πŸ’΅

beaudelair

πŸ’΅

rockmanr

πŸ’΅

davis-ramsey

πŸ’΅

bitcoinlouie

πŸ’΅

neeradjgangapersad

πŸ’΅

davbre

πŸ’΅

heychristopher

πŸ’΅

lalleclausen

πŸ’΅

ppunktw

πŸ’΅

hodldwon

πŸ’΅

sc-jackie

πŸ’΅

abvavgjoe

πŸ’΅

happykennedy

πŸ’΅

zu-ctrl

πŸ’΅

vpepo

πŸ’΅

tvist

πŸ’΅

loanbrew

πŸ’΅

substreight

πŸ’΅

misterigl

πŸ’΅

jiecut42

πŸ’΅

lampshade9909

πŸ’΅

koltenb

πŸ’΅

naga2727

πŸ’΅

evanz13

πŸ’΅

evanmue

πŸ’΅

i-van-kaz

πŸ’΅

ethde

πŸ’΅

katecallahan

πŸ’΅

lescobar-driver

πŸ’΅

isokasakissoja

πŸ’΅

nazsi

πŸ’΅

stobx

πŸ’΅

larrypcdotcom

πŸ’΅

darzyx

πŸ’΅

darkghost7

πŸ’΅

alanjds

πŸ’΅

benny149

πŸ’΅

deanchest

πŸ’΅

austinlem6

πŸ’΅

isaac-art

πŸ’΅

manimechian

πŸ’΅

ppostie

πŸ’΅

karbonbased

πŸ’΅

thomin1

πŸ’΅

ninjasauce84

πŸ’΅

cadilha

πŸ’΅

eumarius

πŸ’΅

xiv1605

πŸ’΅

spcmank

πŸ’΅

willk123

πŸ’΅

pershingcube

πŸ’΅

payraa

πŸ’΅

bellinas

πŸ’΅

qslnz

πŸ’΅

5fiftyseven7

πŸ’΅

PabloCGL

πŸ€”

ranama

πŸ’΅

maltaiso

πŸ’΅

GastΓ³n Zanitti

🌍

Markus Buhatem Koch

πŸ’΅

Viktor Bunin

πŸ’΅

odiblocha

πŸ’΅

coopcode

πŸ’΅

Yalor Arnold

πŸ’΅

CleanApp

πŸ’΅

Justin Leroux

πŸ’΅

tjayrush

πŸ’΅

Franco

πŸ’΅

Kevin Park

πŸ’΅

mfinestone

πŸ’΅

ddwebdevv

🌍

AzogBiceps

🌍

rt

🌍

mds1

πŸ’΅

shawnharmsen

πŸ’΅

Manu Herrera

🌍

Elena Sacchi

🌍

Marc Mogdanz

🌍

Omicron

🌍

Michael Gangolf

🌍

Nicolas H.

🌍

Jose Rivera

🌍

Shamil Uzdenov

🌍

Martin Espericueta

🌍

cyvax

🌍

vyper.fun's People

Contributors

adeksi avatar afink70 avatar bneiluj avatar cyvax avatar ddwebdevv avatar gzanitti avatar h-nick avatar jeluard avatar joserivera12 avatar lifeindeath avatar m1ga avatar marcmogdanz avatar martin-eg avatar mdb1 avatar omicron321 avatar rayan-adamczak avatar toyamarodrigo avatar vasa-develop avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vyper.fun's Issues

Website translation in Chinese

PLEASE REFER TO CONTRIBUTION GUIDE TO SEE HOW TO CONTRIBUTE.

The following checklist represents the status of the translation of different chapters.

The chapters which are "unchecked" (do NOT have a tick mark) are ready to be translated. The chapters which is "checked" (have a tick mark) are NOT available for translation.

If you want to translate a chapter(s), you can COMMENT BELOW with the lesson and chapter numbers. The chapter(s) will be assigned to you.

You need to raise a Pull Request for the translations. After a review, your Pull request will be merged.

IF YOU SUBMIT A PULL REQUEST WITHOUT COMMENTING BELOW, YOUR PULL REQUEST WILL NOT BE ACCEPTED.

Lesson 1: Your first PokΓ©mon

Lesson 2: Catch'em all

Training Review

Hey thank you for developing the training program, with the pokemon idea being fantastic honestly for this case.
Here are some comments coming from someone that knows a bit of python, but 0 Vyper:

  • The self which is normally used in a class, can be used to access any variable defined at the class level... So what confused me, is that self is used to grab public storage variables and functions, but not used to grab constants? Which somewhat confused me a bit. Maybe https://vyper.fun/#/1/working_with_structs needs some clarification on where self is used and where it shouldn't, if constants don't need a self.
    Like in python the concepts of local and global variables, if can be added to the tutorial on how they look like in vyper would help alleviate my confusion.
  • I spend quite a bit of time to try and understand https://vyper.fun/#/2/interfaces . Maybe this concept is quite important to grasp, but in the end I finally understood part of it. so probably need to mention that the interface needs to take in as a parameter, the address of the target contract (in which the function called lives), because for me the way it was written, given a contract address I did not know which contract was being referred to. Now on the second part of storage variables. I understood the implementation kind of, that interfaces can be defined in the init (kind of like when a class is imported in a different class as a variable), but then, where can we specify payable / nonpayable or view can be specified here? or is there something of a default on all contract functions. Like as in the example below, does self.car.getSpeed() have view/payable or which type of characteristic:
car: Car

@external
def __init__(car_address: address):
    self.car = Car(car_address)

@external
def getCarSpeed():
    self.car.getSpeed()
  • One more point if possible... The use of the debugger. This is like kind of the most important thing of any coding language. If there was a chapter on that, it would be amazing.

Small chapter 5 correction

Hi. Tiny fix in the examples for mappings they are both called exampleMapping1, the second example should be exampleMapping2 as it is referred to in the explanation.

Thanks for building this resource :)

Website translation in Russian

PLEASE REFER TO CONTRIBUTION GUIDE TO SEE HOW TO CONTRIBUTE.

The following checklist represents the status of the translation of different chapters.

The chapters which are "unchecked" (do NOT have a tick mark) are ready to be translated. The chapters which is "checked" (have a tick mark) are NOT available for translation.

If you want to translate a chapter(s), you can COMMENT BELOW with the lesson and chapter numbers. The chapter(s) will be assigned to you.

You need to raise a Pull Request for the translations. After a review, your Pull request will be merged.

IF YOU SUBMIT A PULL REQUEST WITHOUT COMMENTING BELOW, YOUR PULL REQUEST WILL NOT BE ACCEPTED.

Lesson 1: Your first PokΓ©mon

Lesson 2: Catch'em all

Website translation in French

PLEASE REFER TO CONTRIBUTION GUIDE TO SEE HOW TO CONTRIBUTE.

The following checklist represents the status of the translation of different chapters.

The chapters which are "unchecked" (do NOT have a tick mark) are ready to be translated. The chapters which is "checked" (have a tick mark) are NOT available for translation.

If you want to translate a chapter(s), you can COMMENT BELOW with the lesson and chapter numbers. The chapter(s) will be assigned to you.

You need to raise a Pull Request for the translations. After a review, your Pull request will be merged.

IF YOU SUBMIT A PULL REQUEST WITHOUT COMMENTING BELOW, YOUR PULL REQUEST WILL NOT BE ACCEPTED.

Lesson 1: Your first PokΓ©mon

Lesson 2: Catch'em all

Chapter 1: Building your first Pokemon

The first chapter will include the core concepts of Vyper including:

  • Structure of a contract
  • Types
  • Env variables and constants
  • Statements
  • Control Structures
  • Scoping and declarations
  • Built-in functions
  • Interfaces
  • Event Logging
  • NatSpec Metadata

Using these concepts, the user will build their first pokemon.

Website translation in Italian

PLEASE REFER TO CONTRIBUTION GUIDE TO SEE HOW TO CONTRIBUTE.

The following checklist represents the status of the translation of different chapters.

The chapters which are "unchecked" (do NOT have a tick mark) are ready to be translated. The chapters which is "checked" (have a tick mark) are NOT available for translation.

If you want to translate a chapter(s), you can COMMENT BELOW with the lesson and chapter numbers. The chapter(s) will be assigned to you.

You need to raise a Pull Request for the translations. After a review, your Pull request will be merged.

IF YOU SUBMIT A PULL REQUEST WITHOUT COMMENTING BELOW, YOUR PULL REQUEST WILL NOT BE ACCEPTED.

Lesson 1: Your first PokΓ©mon

Lesson 2: Catch'em all

Website translation in Spanish [COMPLETED]

PLEASE REFER TO CONTRIBUTION GUIDE TO SEE HOW TO CONTRIBUTE.

The following checklist represents the status of the translation of different chapters.

The chapters which are "unchecked" (do NOT have a tick mark) are ready to be translated. The chapters which is "checked" (have a tick mark) are NOT available for translation.

If you want to translate a chapter(s), you can COMMENT BELOW with the lesson and chapter numbers. The chapter(s) will be assigned to you.

You need to raise a Pull Request for the translations. After a review, your Pull request will be merged.

IF YOU SUBMIT A PULL REQUEST WITHOUT COMMENTING BELOW, YOUR PULL REQUEST WILL NOT BE ACCEPTED.

Lesson 1: Your first PokΓ©mon

Lesson 2: Catch'em all

Remove suggestion to underscore internal function paramaters

The convention to add an underscore to the parameter names of internal function was removed in vyper in vyperlang/vyper#2166

Thus, this no longer applies and we should remove this statement in https://github.com/vyperfun/vyper.fun/blob/master/1/external_internal_functions.md .
Note that this does not affect internal function names, only their parameter names.

At the time of writing this however, due to a bug in vyper this still fails for function arguments, although it is fine for local variable names.

Possible ideas for the Applications/Games?

This issue is for pooling ideas for possible applications/games that we will build in a series of chapters using Vyper.

Some possible games:

  1. Pokemon Collectibles: Collect, breed, upgrade, battle, and trade pokemons.
  2. Dragon Ball Z Collectibles: Collect, upgrade, battle, and trade characters.

Some possible applications:

  1. A sample auction.

Add your suggestions in the comments :)

Website translation in Portuguese

PLEASE REFER TO CONTRIBUTION GUIDE TO SEE HOW TO CONTRIBUTE.

The following checklist represents the status of the translation of different chapters.

The chapters which are "unchecked" (do NOT have a tick mark) are ready to be translated. The chapters which is "checked" (have a tick mark) are NOT available for translation.

If you want to translate a chapter(s), you can COMMENT BELOW with the lesson and chapter numbers. The chapter(s) will be assigned to you.

You need to raise a Pull Request for the translations. After a review, your Pull request will be merged.

IF YOU SUBMIT A PULL REQUEST WITHOUT COMMENTING BELOW, YOUR PULL REQUEST WILL NOT BE ACCEPTED.

Lesson 1: Your first PokΓ©mon

Lesson 2: Catch'em all

Website translators needed!

We're constantly in need of volunteers to help translate vyper.fun!

Given that Vyper.fun is a global project, we believe it's critical that Vyper.fun is accessible to everyone, regardless of their nationality or language. Our community has been working hard to make this vision a reality but we could use your help!

How to get involved

Check out contribution guide for instructions on how to get started as a translator. Don't see your language listed? Please comment here & we'll help get you set up.

Join our Discord server for collaboration & support.

Website translation in Japanese

PLEASE REFER TO CONTRIBUTION GUIDE TO SEE HOW TO CONTRIBUTE.

The following checklist represents the status of the translation of different chapters.

The chapters which are "unchecked" (do NOT have a tick mark) are ready to be translated. The chapters which is "checked" (have a tick mark) are NOT available for translation.

If you want to translate a chapter(s), you can COMMENT BELOW with the lesson and chapter numbers. The chapter(s) will be assigned to you.

You need to raise a Pull Request for the translations. After a review, your Pull request will be merged.

IF YOU SUBMIT A PULL REQUEST WITHOUT COMMENTING BELOW, YOUR PULL REQUEST WILL NOT BE ACCEPTED.

Lesson 1: Your first PokΓ©mon

Lesson 2: Catch'em all

Feedback on the first chapter

Hi. First of all, great job!
Like I said in the chat, I noticed some small issues while doing chaper 1:
In lesson 10, there is no mention that the function _generateRandomDNA must accept a String[32] as argument, so there is no way to know that the solution expects it.
In lesson 11: In line 4 from the instruction text there is a small typo ("hexidecimal"). The text also claims that converting a negative int128 to uint256 returns the positive counterpart, but the documentation linked states that conversion from a negative int to uint is not allowed. I did a quick test in Remix and the conversion did fail, but maybe I overlooked something and there's a way?

The last one is not so much an issue but a sugggestion: In lesson 9 we create the totalPokemonCount variable and use it to access the pokemonList. While doing it, it feels pretty obvious that we are "forgetting" to increment totalPokemonCount by 1 after creating a Pokemon. We end up adding in that part a couple of lessons later, but while you do the lesson it feels like an oversight from the tutorial. Also, the operator "+=" isn't explained before we use it...
So maybe explain += in lesson 4 together with the other operators, and then in lesson 9 put something like "Remember that += operator we saw before? Let's try it here" , so the function is feels finished (even though we are expanding it later)?

That's all! Anyway. I like what you are doing here a lot and I'd love to contribute. I'm learning Vyper myself, so there's probably not much I can do on the coding side of things, but I'd be glad to proofread, translate (spanish, german), or just be the first user :)

Website translation in Arabic

PLEASE REFER TO CONTRIBUTION GUIDE TO SEE HOW TO CONTRIBUTE.

The following checklist represents the status of the translation of different chapters.

The chapters which are "unchecked" (do NOT have a tick mark) are ready to be translated. The chapters which is "checked" (have a tick mark) are NOT available for translation.

If you want to translate a chapter(s), you can COMMENT BELOW with the lesson and chapter numbers. The chapter(s) will be assigned to you.

You need to raise a Pull Request for the translations. After a review, your Pull request will be merged.

IF YOU SUBMIT A PULL REQUEST WITHOUT COMMENTING BELOW, YOUR PULL REQUEST WILL NOT BE ACCEPTED.

Lesson 1: Your first PokΓ©mon

Lesson 2: Catch'em all

Website translation in German

PLEASE REFER TO CONTRIBUTION GUIDE TO SEE HOW TO CONTRIBUTE.

The following checklist represents the status of the translation of different chapters.

The chapters which are "unchecked" (do NOT have a tick mark) are ready to be translated. The chapters which is "checked" (have a tick mark) are NOT available for translation.

If you want to translate a chapter(s), you can COMMENT BELOW with the lesson and chapter numbers. The chapter(s) will be assigned to you.

You need to raise a Pull Request for the translations. After a review, your Pull request will be merged.

IF YOU SUBMIT A PULL REQUEST WITHOUT COMMENTING BELOW, YOUR PULL REQUEST WILL NOT BE ACCEPTED.

Lesson 1: Your first PokΓ©mon

Lesson 2: Catch'em all

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.