Basic movement in Unity3D

How to create Basic Movement in Unity3D using C# code.

 

So we got our player Object:

And we want to make it move.

How we do it?

Let’s start with simple left and right movement on 2D space. We want to move our character for example on the X axis.

using UnityEngine;

public class PlayerController : MonoBehaviour {

    Rigidbody rb;
    public float speed = 10.0f;

    void Start () {
        rb = GetComponent<Rigidbody>();
    }

  void Update () {
        if (Input.GetKey(KeyCode.RightArrow))
        {
            rb.velocity = transform.right * speed;
        }
    }
}

Here is the code for moving right if we press the Right Arrow Key.

But wait a second! We did move left after the second press while we wanted to move only right!? It’s because after we moved right the ball rotated and the Vector point for moving right was pointed in the other direction.

We can fix it when we add

rb.freezeRotation = true;

to our start function.

So after changing the speed to 2.0f and adding the code above we get something likes this:

Looks not that bad. Could be better, but we are just starting.

We want now implement movement to the left. We can just copy our function and change some things so we can move to the left.

using UnityEngine;

public class PlayerController : MonoBehaviour {

    Rigidbody rb;
    public float speed = 2.0f;

    void Start () {
        rb = GetComponent<Rigidbody>();
        rb.freezeRotation = true;
    }

  void Update () {
        if (Input.GetKey(KeyCode.RightArrow))
        {
            rb.velocity = transform.right * speed;
        }

        if (Input.GetKey(KeyCode.LeftArrow))
        {
            rb.velocity = -transform.right * speed;
        }
    }
}

There is not such function as transform.left so we need to mirror the transform.right function using the minus symbol.

This way we achieved movment left and right.

If we want to add other dimension to our movement and make it really 3D we can add the Z Axis to our code.

Because there is no shortcut for our transform function, we need to call our Vector3 Function directly.

For moving up, we can write something like this:

rb.velocity = new Vector3(0, 0, 1) * speed;

It does the same thing like the one above, but calls additionaly Vector3.

And here is the full code:

using UnityEngine;

public class PlayerController : MonoBehaviour {

    Rigidbody rb;
    public float speed = 2.0f;

    void Start () {
        rb = GetComponent<Rigidbody>();
        rb.freezeRotation = true;
    }

  void Update () {
        if (Input.GetKey(KeyCode.RightArrow))
        {
            rb.velocity = transform.right * speed;
        }

        if (Input.GetKey(KeyCode.LeftArrow))
        {
            rb.velocity = -transform.right * speed;
        }

        if (Input.GetKey(KeyCode.UpArrow))
        {
            rb.velocity = new Vector3(0, 0, 1) * speed;
        }

        if (Input.GetKey(KeyCode.DownArrow))
        {
            rb.velocity = new Vector3(0, 0, -1) * speed;
        }
    }
}

But is it the only way in which we can move our character? Well… Not really. It’s just the way using the transform function.

If we want to make our ball to move in more realistic way we can do it using the Input.GetAxis() function. This way we are using physics forces which give more realistic feeling.

using UnityEngine;

public class PlayerController : MonoBehaviour {

    Rigidbody rb;
    public float speed = 2.0f;

    void Start () {
        rb = GetComponent<Rigidbody>();
    }

  void Update () {
        float moveHorizontal = Input.GetAxis("Horizontal");
        float moveVertical = Input.GetAxis("Vertical");

        rb.AddForce(new Vector3(moveHorizontal, 0.0f, moveVertical) * speed);
    }
}

It’s based on Rigidbody, so changing the mass or Drag in the Rigidbody element throught Inspector is going to have impact on our Player Object.

Other way to create player Movement is to give the player Speed with ArrowUp/ArrowDown Key and steer it with ArrowLeft/ArrowRight Key.

using UnityEngine;

public class PlayerController : MonoBehaviour {

    public float movementSpeed = 5.0f;
    public float rotationSpeed = 200.0f;

    void Update () {
        transform.Rotate(0, Input.GetAxis("Horizontal") * Time.deltaTime * rotationSpeed, 0);
        transform.Translate(0, 0, Input.GetAxis("Vertical") * Time.deltaTime * movementSpeed);
    }
}

As you see we combined the first two possible solutions for movement and created a new one.

We used the transform function and Input.GetAxis()  to get our new possible movement. Other than that, this type of movement is great for Racing games.

Other than that, we can use the built-in solution which is provided by Unity. The Character Controller:

And here is the code for Character Controller which enables us to move our character with WASD or Arrow Keys.

using UnityEngine;

public class PlayerController : MonoBehaviour {


    CharacterController characterController;
    public float movementSpeed = 5.0f;
    private Vector3 moveDirection = Vector3.zero;

    void Start()
    {
        characterController = GetComponent<CharacterController>();

    }
    void Update () {
        if (characterController.isGrounded)
        {
            moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0.0f, Input.GetAxis("Vertical"));
            moveDirection = moveDirection * movementSpeed;
        }

        //Gravity
        moveDirection.y -= 10f * Time.deltaTime;

        characterController.Move(moveDirection * Time.deltaTime);
    }
}

We don’t use Rigidbody so we need to implement gravitation by ourselves.

That’s all for today. I hope you learned something about Unity Character Movement.

If you want to check more, you can look up on my Jumping tutorial:

How to make the player Object Jump in Unity 3D.

Or the Countdown timer tutorial:

How to create a simple countdown Timer in Unity

 

How to make the player Object Jump in Unity 3D.

How to make the player Object Jump when we press Space button on our Keyboard.

For Example, we got our player Object. The player Object ist just a simple Sphere Object with Red material on it.

If we add this Script to our Object, we make it Jump within pressing on the Space Button.

using UnityEngine;

[RequireComponent(typeof(Rigidbody))]
public class Jump : MonoBehaviour {

    Rigidbody rb;
    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            rb.AddForce(new Vector3(0, 10, 0), ForceMode.Impulse);
        }
    }
}

We add 10 Points of Force (on the Y axis) to our Rigidbody Function. We do it with Vector3 and ForceMode.Impulse function.

The problem is we can do multiple Jumps at the same time. When we change the Value of 10 to 5 and press the space button multiple time we get something like this.

It’s not that bad actually… but if you didn’t planned to implement this in your project then you need to ground the player Object.

We can do it when we add “isGrounded” to our if operation as bool value and set the value to true in the void function OnCollisionStay()

using UnityEngine;

[RequireComponent(typeof(Rigidbody))]
public class Jump : MonoBehaviour {

    public bool isGrounded;
    Rigidbody rb;
    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }

    void OnCollisionStay()
    {
        isGrounded = true;
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space) && isGrounded)
        {
            rb.AddForce(new Vector3(0, 5, 0), ForceMode.Impulse);
            isGrounded = false;
        }
    }
}

This way we can do a double jump:

But if your goal was that the player got only the possiblity to do a single jump than you need to replace the OnCollisionStay() function with OnCollisionEnter() function and tag your ground object with “Ground” as tag name.

Final Script for Single Jump:

using UnityEngine;

[RequireComponent(typeof(Rigidbody))]
public class Jump : MonoBehaviour {

    public bool isGrounded;
    Rigidbody rb;
    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }

    void OnCollisionEnter(Collision col)
    {
        if (col.gameObject.tag == ("Ground") && isGrounded == false)
        {
            isGrounded = true;
        }
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space) && isGrounded)
        {
            rb.AddForce(new Vector3(0, 5, 0), ForceMode.Impulse);
            isGrounded = false;
        }
    }
}

This way we achived the possible solutions for making the player jump.

Other things which we can do is making the jump variable public and have more “space” for modifying our jumping behavior. Or we do it with other buttons or key press.

So if we want to make the player jump with our left mouse button click or while touching the mobile screen (if we plan to release it on android) we can write it this way:

void Update()
{
    if (Input.GetKeyDown(KeyCode.Space) || Input.GetMouseButton(0) && isGrounded)
    {
        rb.AddForce(new Vector3(0, 5, 0), ForceMode.Impulse);
        isGrounded = false;
    }
}

And if we want to modify the speed of the player jumping we can write it this way:

using UnityEngine;

[RequireComponent(typeof(Rigidbody))]
public class Jump : MonoBehaviour {

    public float jumpSpeed = 5f;
    public bool isGrounded;
    Rigidbody rb;

    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }

    void OnCollisionEnter(Collision col)
    {
        if (col.gameObject.tag == ("Ground") && isGrounded == false)
        {
            isGrounded = true;
        }
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space) || Input.GetMouseButton(0) && isGrounded)
        {
            rb.AddForce(new Vector3(0, 2, 0) * jumpSpeed, ForceMode.Impulse);
            isGrounded = false;
        }
    }
}

This way we can modify the speed throught inspector too!

Other posts on the Unity3D topic:

How to create a simple countdown Timer in Unity

Tutorial: How to access variable from other class in Unity

Tutorial: How to access variable from other class in Unity

I have dealt with this problem very often.

How to get variables from other Class in Unity? For example I’ve got one Class with public Variables and i want to get the same value of the Variable in other Class.

For Example it could be a Class which adds points to overall Score. But in other Class i show it using Unity UI System as Text.

Here is the Class with Variable which is calling the Function in other Class.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Score : MonoBehaviour {

  public GameObject scoreScript;
  // Use this for initialization

  public void OnTriggerEnter2D(Collider2D node)
  {
    if (node.gameObject.tag == "Apple") {
      Destroy (node.gameObject);
      ScoreMenager scorePointsScript =  scoreScript.GetComponent<ScoreMenager>();
      scorePointsScript.AddScore ();

    }
  }
}

 

And here is the Class which contains the Function where the variable points gets incremented.

using System.Collections.Generic;
using UnityEngine.UI;
using UnityEngine;

public class ScoreMenager : MonoBehaviour {
  public int points;


  Text text;

  void Awake ()
  {
    text = GetComponent<Text> ();

  }
  // Use this for initialization
  void Start () {
  }

  public void AddScore()
  {
    points++;
  }
  // Update is called once per frame
  void Update () {
    

    text.text = "Score: " + points;
  }
}

 

Don’t Forget to Add The “Score” Script to your character! And the same for ScoreMenager, which needs to be added to the UI Element.

And also don’t forget to Create the Text as GUI

Also important is the fact, that you need to change the “Tag” of your element which will be destroyed. After it increases the Score Points value.

Component > UI > Text

 

Other tutorials in the series:

How to make the objects fall in Unity

Making Objects Fall Random On The Screen in Unity

How to Speed Up (Increase Speed) Time in Unity

How to create a simple countdown Timer in Unity

Rendering Crisp Pixelart in Phaser (2017)

I had this problem while building my pixelart game in Phaser. My Pixelart was blurry. It didn’t looked nice. I was searching the web for an answer but i didn’t found one. Many of the tutorials were outdated so i decided to write my solution here.

You can find the working example here: http://www.noob-programmer.com/pixelart_example/

Example above works for Chrome and Mozilla Firefox.

Solution includes editing CSS and one line in phaser script.

Here is the CSS which you need to apply to your html element:

body {
  filter: none;
  image-rendering: -moz-crisp-edges;
  image-rendering: -webkit-crisp-edges;
  image-rendering: pixelated;
  image-rendering: crisp-edges;
}

Used it on body element.

The other line is the Phaser script:
var game = new Phaser.Game(200, 150, Phaser.AUTO, 'gameContainer', {
      preload: preload,
      create: create,
      update: update
    }, null, false, false);

The last parameter (“false”) is for antialiasing. It needs to be set to false.

What about other browsers? What do i need to change in order to get crispy Pixelart? Check this solution:

body {
  -ms-interpolation-mode: nearest-neighbor; // IE 7+ (non-standard property)
  image-rendering: -webkit-optimize-contrast; // Safari 6, UC Browser 9.9
  image-rendering: -webkit-crisp-edges; // Safari 7+
  image-rendering: -moz-crisp-edges; // Firefox 3.6+
  image-rendering: -o-crisp-edges; // Opera 12
  image-rendering: pixelated; // Chrome 41+ and Opera 26+
}

Source: https://builtvisible.com/image-scaling-in-css/

Source: https://developer.mozilla.org/en-US/docs/Games/Techniques/Crisp_pixel_art_look

W jaki sposób samoucy znajdują pracę jako programiści?

W jaki sposób samoucy znajdują pracę jako programiści?

Takie pytanie pojawiło się w serwisie Quora

Mam 17 lat i programuję od 14 roku życia. Głównie koncentruje się na Javie i udało mi się zdobyć piątkę w ocenie końcowej z Informatyki. Jestem całkiem biegły w używaniu Javy (składnia, OOP, GUI/JFrame itd.) i nawet całkiem dobrze radzę sobie z HTML5 oraz CSS3. Jednakże wydaje mi się, że wciąż zbyt wiele mi brakuje, aby się lepiej prezentować na rynku pracy (np: Nie wiem jak działają bazy danych i które z nich powinienem używać). Z tego względu ciekawi mnie jak inni się tego wszystkiego uczą. Zamierzam w przyszłości iść na Informatykę jednak zaczyna mnie irytować fakt, że aby ktokolwiek chciał mnie zatrudnić to muszę iść na studia.  Czy są jakieś kursy, bądź rzeczy, które mógłbym robić, aby polepszyć moją sytuację?

Odpowiedź:

Wydaje mi się, że źle do tego podchodzisz. Masz nadzieję, że aby czegoś się nauczyć to musisz koniecznie przejść przez jakieś kursy, gdzie ktoś cię ciebie czegoś nauczy. A samoucy właściwie robią coś zupełnie innego.

Programista samouk ma właściwie bardzo wiele wspólnego z osobą, która sama nauczyła się grać na gitarze. Nie wiem czy kiedykolwiek grałeś na gitarze, więc wytłumaczę ci jak osoba, która chcę się nauczyć grać na gitarze może podejść do nauki gry na tym instrumencie.

Po pierwsze, znajdują swój wzorzec. Jeżeli zamierzają nauczyć się grać na gitarze, to mają swojego idola(bądź idoli) i prawdopodobnie będzie to jakiś znany gitarzysta, którego chętnie słuchają. Więc starają się być tak jak on. Po tym fakcie decydują się że “Ja też mogę być gitarzystą!”. Więc idą do lokalnego sklepu muzycznego(albo serwisu aukcyjnego) i kupują używaną gitarę (bo są tańsze i nie robi to na początku zbytniej różnicy).

 

 

Następnie jedna z dwóch rzeczy się wydarzy.

Albo ta osoba zabierze się za książkę typu “Gitara dla bystrzaków”, bądź wejdzie na YouTube i zacznie się uczyć jak grać ich ulubione piosenki. Z reguły ci którzy grają swoje ulubione piosenki radzą sobie lepiej z grą na gitarze.

Tak więc, jeżeli młody adept jest zmotywowany, aby nauczyć się konkretnej piosenki to będzie oglądał filmy instruktażowe, drukował tabulatury, akordy i tak dalej i będzie starał się tą piosenkę odtworzyć na podstawie dostępnych mu materiałów.

Po wielu godzinach ćwiczeń, nauki akordów, solówek, sposobów kostkowania i tak dalej, będzie w stanie zagrać swoją własną wersję piosenki. Nie będzie ona dokładnie taka sama, ale wystarczająco dobra, aby zrobić wrażenie.

Następnie zacznie się uczyć kolejnej piosenki, która się mu podoba. Po drodze nauczy się schematów, technik i tak dalej nie zdając sobie nawet z tego sprawy, czym one faktycznie są. Będzie je stosować nie znając ich nazw i jak one w teorii faktycznie działają.

Po pewnym czasie gra na gitarze będzie po prostu “czymś naturalnym” i zabranie się za naukę nowej piosenki będzie powszechne i bezproblemowe. A “mowa” gitarowa będzie czymś czym może się porozumiewać tak jak ty, czy ja porozumiewamy się używając słów.

To wszystko się dzieje po tysiącach godzin ćwiczeń. Nawet grając kilka godzin dziennie, zabierze to wiele lat.

Ale… co to ma wspólnego z programistami samoukami?

Więc… tą rzeczą, która tworzy programistów samouków jest to, że oni budują rzeczy. Dużo rzeczy. Aby stać się świetnym programistą z cennymi umiejętnościami na rynku pracy, musisz budować rzeczy i pisać kod.

Chodzenie na zajęcia/kursy i nauka teorii jest świetnym pomysłem, ale wielu profesorów nie dała rady “wykodować” swojej drogi do pracy zawodowej. Nie byliby w stanie stworzyć użytecznej aplikacji, którą ktokolwiek chciałby używać, nawet jakby się starali.

To nie chodzi o to, że oni się na tym nie znają. Raczej o to, że  do umiejętności profesora należą badania naukowe i ich teoretyczne zrozumienie, a nie pisanie kodu i przynoszenie wartości dla klienta.

 

 

Widzisz różnicę?

Najlepsi programiści z którymi pracowałem stali się dobrzy ponieważ budowali rzeczy. Wiele rzeczy. Praktycznie… cały czas.

Na ten przykład, dzisiaj wszyscy używają WordPressa. Długo przed powstaniem WordPressa stworzyłem dla własnych celów 3, bądź 5 różnych Systemów Zarządzania Treścią (CMS) w PHP i MySQL. Tworzyłem gry. Tworzyłem aplikacje mobilne. Frameworki. Oraz aplikacjie SAAS.

Nikt mi za to nie płacił. Robiłem to dla zabawy, nauki, bądź z ciekawości.

Nie byłem na zajęciach od lat i nie wydaje mi się, że by pomogły mi one w mojej karierze. Jednakże, gdybym się zdecydował stworzyć własny język programowania, bądź system operacyjny od podszewki, to mogę się założyć że przy okazji nauczył bym się bardzo wielu ciekawych rzeczy.

Tak, prawdopodobnie bym mógł iść na zajęcia z tej dziedziny, ale nauczyłbym się o wiele więcej budując coś, robiąc błędy i naprawdę “doświadczając” tego wszystkiego, niż gdybym przeczytał książkę, bądź wysłuchał wykładu.

Więc moja rada da ci sporą przewagę od tych którzy tego nie robią…

Rozwiąż problem, który chcesz rozwiązać. Stwórz program, który chciałbyś, aby oprogramowanie robiło. Albo ktoś inny by chciał by oprogramowanie robiło. Pisz kod w tym kierunku każdego dnia. Noce, weekendy, codziennie. Nawet jeżeli spędzisz nad tym 15 minut, to będzie to wystarczająca ilość czasu.

 

 

Aż w końcu będziesz mieć coś co działa i jest całkiem przyzwoite.

A potem robisz to znowu. Budujesz coś innego. Twórz, twórz, twórz i jeszcze raz twórz. Stawiaj sobie wyzwania, aby pomóc sobie w osiągnięciu tych dziesiątek tysięcy godzin.

W miarę tworzenia staraj się  zbierać swoje prace i publikuj je jako portfolio na swojej stronie. Za każdym razem, gdy ktoś skończysz wrzuć to na social media, Reddit, Twitter cokolwiek. Napisz na ten temat wpis na blogu.

Masz 17 lat… do czasu ukończenia 20 bez problemu zebrałbyś 2000+ godzin i około 10-20 projektów w portfolio. Nauczyłbyś się również masę rzeczy, których nie nauczą się ludzie chodzący na lekcje czy wykłady.

Co więcej, pokażesz że umiesz pisać kod, rozwiązywać problemy i tworzyć coś pożytecznego. To jest cenne. To jest coś czego szukają firmy.

Gdy tylko znajdziesz pracę, twórz dalej w swoim wolnym czasie i promuj to co stworzyłeś. Rozwiniesz się szybciej od swoich rówieśników, bo gdy ty się uczysz, rozwijasz i tworzysz to oni wracają do domu i siadają się przed telewizorem.

Im więcej tworzysz, tym więcej się uczysz. Im więcej się uczysz, tym cenniejszy się stajesz. Im cenniejszy się stajesz, tym łatwiej jest ci znaleźć pracę i większą dostaniesz pensję.

Więc idź i pisz kod! Twórz coś!

~Brian

Tłumaczenie wpisu z tego bloga: http://brianknapp.me/how-do-self-taught-developers-actually-get-jobs/

Sprawdźcie również jego książkę:

http://brianknapp.me/creative-genius/

A tu link bezpośredni do Amazonu: https://www.amazon.com/dp/B0163BAUWC/?tag=bkme-20

Jeżeli zaczynasz właśnie naukę programowania to koniecznie to przeczytaj!

Odnośnie nauki programowania, to zauważyłem, że wiele osób nie zdaje sobie z tego sprawy, że nauka programowania nie tyle polega na zbieraniu wiedzy i rozwiązywaniu problemów, ale też magazynowaniu rozwiązań i tworzenia z nich bibliotek.

Kiedyś zmagając się z jakimś problemem często szukałem rozwiązania w Google. Czasem trwało to dłużej, czasem krócej. Ale zawsze jakoś udało mi się go rozwiązać.

Obecnie często wracam po prostu do starych projektów i patrze jak dany problem rozwiązałem w innym projekcie. Posiadanie GitHuba z projektami, mimo ze są mało popularne, followersów prawie nie mam wcale i prawie żadnych gwiazdek… to przydaje się jednak jako taki magazyn z rozwiązanymi już zadaniami. Dzięki temu obecnie projekty robione po godzinach pisze mi się o wiele szybciej.

Czytam też projekty innych osób. Czasem kopiuję, czasem ulepszam. Próbuje z kilku projektów zrobić jeden większy i tak się powoli człowiek uczy tego programowania.

Najważniejsze w tym wszystkim to się nie poddawać. Cięższe dni trafiają się zawsze. Czasem rozwiązanie problemu zabierze nam o wiele więcej czasu, niż się tego spodziewaliśmy. Ale koniec końców się opłaca.

 

Wyrażenia Regularne (regular expressions/regex) oraz HTML Pattern

Jak działają wyrażenia regularne? Sam się nad tym przez pewien czas zastanawiałem. W pracy zawodowej musiałem czasem z nich korzystać, ale zbytnio nie przywiązałem do nich uwagi, bo głównie polegało to na znalezieniu pasującego przykładu z internetu.

Ze względu na to, że potrzebowałem odpoczynku od głównego projektu to postanowiłem na szybko napisać w PHP ten mały web-programik do tworzenia palety kolorów w PHP.

Read More

Nauka programowania #5 W jaki sposób czytać i rozumieć cudzy kod?

Prawdopodobnie nie jest to najlepsze rozwiązanie jeżeli chodzi o bardzo duże projekty, ale jeżeli właśnie zaczynacie swoją przygodę z programowaniem, to może być to świetny sposób, aby lepiej zrozumieć cudzy kod.

Była to praktyka, którą stosowałem na początku mojej drogi z nauką programowania. Ale jest to też praktyka, którą stosuje teraz jeżeli właśnie się uczę nowej technologii.

Jeżeli się właśnie uczysz czegoś nowego i nie ogarniasz zbytnio składni to radzę poszukać projektów na GitHubie lub z innych źródeł do 100 linijek. W przypadku, gdy czujesz się w danym języku pewniej, to można zacząć z projektami posiadającymi 1000-2000 linijek.

Na początek zaczniemy od tych prostych projektów.

Przy 100-200 linijkach jeżeli rozumiesz zasady OOP to nie powinno być problemu. Jeżeli projekt posiada wiele funkcji  i jest dobrze ponazywany to wystarczy zrozumieć jego logikę. Ale co jeżeli projekt jest słabo napisany i ciężko się go czyta?

Wtedy należy spróbować mojej metody. A jak ona działa?

Od końca kasujemy kolejne funkcje i sprawdzamy na którym etapie program się “wysypie”. Jeżeli nasz program mówi nam, że brakuje danej funkcji, to albo zostawiamy ją pustą, albo usunęliśmy funkcję w złej kolejności.

I teraz gdy mamy kod zmniejszony do tych kilku linijek, próbujemy dopisywać kolejne linijki (te które wcześniej usunęliśmy) i patrzymy jak zachowuje się nasz program. Co się zmienia w konsoli, jak zmienia się nasz program w przeglądarce etc.

Jeżeli program jest podzielony na kilka klas i plików to oczywiście mamy łatwiej. Jednak z doświadczenia wiem, że wiele projektów to programy na 500-1000 linijek. W tym przypadku robimy to samo co powyżej. Jednak zasada ta w większych projektach działa lepiej, bo większe projekty z natury mają lepszą strukturę. Ale i potrafią być czasem zakręcone.

 

 

 

Nauka Programowania #4 Co zrobić gdy program wywali błąd?

Znacie to, gdy piszecie jakiś projekt i własnie utknęliście?  Wasz kompilator wywala błąd? Co wtedy robicie?

Akurat jeżeli jesteście na początku nauki programowania, to spotkacie się z tym problemem wielokrotnie. W miarę lepszego rozumienia koncepcji programistycznej, jak działają poszczególne elementy komputera, jak działają obiekty i jak na siebie oddziałują, to jest o wiele łatwiej. Ale mimo wszystko. To wciąż się będzie wam zdarzało. Rzadziej. Pewnie. Problem nawet szybciej rozwiążecie. Ja natomiast chciałbym wytłumaczyć początkującym jak do takich problemów podchodzić.

Read More

Nauka Programowania #3 Kondycja programistyczna

Pamiętam, że gdy zaczynałem moją przygodę z programowaniem to miałem straszne trudności kondycją programistyczną, czyli z wytrzymaniem przy programowaniu dłużej niż godzinę.

Męczyłem się, wiedza gorzej wchodziła mi do głowy. Potem to całe programowanie zaczynało mi się nudzić, aż w końcu odpuszczałem. Próbowałem również takich suplementów jak Kawa czy Yerba Mate, ale niewiele one pomagały.

Read More