Flutter 기반 게임 개발 입문

아토믹데브_3_취업 준비생을 위한 모바일 게임 개발 여정

atomicdev 2024. 8. 26. 11:11
728x90

제3강: 프로그래밍 언어 기초


학습 목표:

이 강의에서는 React Native나 Flutter로 게임을 개발하기 위해 필수적인 프로그래밍 언어의 기본 문법과 객체지향 프로그래밍(OOP)의 핵심 개념을 학습합니다. 여러분은 자바스크립트(JavaScript) 또는 다트(Dart)를 선택하여 해당 언어의 기초를 다지고, 객체지향 프로그래밍의 원리를 이해하며, 간단한 콘솔 애플리케이션을 작성해 볼 것입니다.


1. 자바스크립트 또는 다트 기본 문법 학습

프로그래밍을 시작하기 전에 선택한 언어의 기본 문법을 이해하는 것이 중요합니다. React Native를 선택했다면 자바스크립트를, Flutter를 선택했다면 다트를 학습하게 됩니다.

1.1 자바스크립트 기본 문법

자바스크립트는 웹과 모바일 앱 개발에서 널리 사용되는 언어로, 유연하고 강력한 기능을 제공합니다. 자바스크립트의 기본 문법을 이해하면, React Native를 사용하는 데 있어서 큰 도움이 됩니다.

  • 변수 선언: 자바스크립트에서는 var, let, const를 사용하여 변수를 선언할 수 있습니다. let과 const는 블록 스코프를 가지며, const는 상수 선언에 사용됩니다.
    let message = "Hello, World!"; 
    const pi = 3.14;
  • 조건문: 자바스크립트에서는 if, else if, else를 사용하여 조건문을 작성할 수 있습니다.
    if (score > 90) {
        console.log("Excellent!");
    } else if (score > 75) {
        console.log("Good job!");
    } else {
        console.log("Keep trying!");
    }
  • 반복문: 자바스크립트에서는 for, while, do...while 반복문을 사용할 수 있습니다.
    for (let i = 0; i < 5; i++) {
        console.log(i);
    }
  • 함수 선언: 자바스크립트에서 함수는 function 키워드를 사용하여 선언할 수 있으며, 화살표 함수(=>)를 사용해 간결하게 표현할 수도 있습니다.
    function greet(name) {
        return `Hello, ${name}!`;
    }
    
    const add = (a, b) => a + b;

 

1.2 다트 기본 문법

다트는 Google이 개발한 프로그래밍 언어로, Flutter에서 사용됩니다. 다트는 문법적으로 C#이나 Java와 유사하여, 객체지향 프로그래밍을 쉽게 배울 수 있습니다.

  • 변수 선언: 다트에서는 var, final, const를 사용하여 변수를 선언할 수 있습니다. final과 const는 값을 변경할 수 없는 변수를 선언할 때 사용됩니다.
    var message = "Hello, World!";
    final pi = 3.14;
  • 조건문: 다트에서도 자바스크립트와 유사한 방식으로 조건문을 작성할 수 있습니다.
    if (score > 90) {
      print("Excellent!");
    } else if (score > 75) {
      print("Good job!");
    } else {
      print("Keep trying!");
    }
     
  • 반복문: 다트에서는 for, while, do...while 반복문을 사용할 수 있습니다.
    for (var i = 0; i < 5; i++) {
      print(i);
    }
     
  • 함수 선언: 다트에서 함수는 void나 반환 타입을 명시하여 선언할 수 있습니다.
    String greet(String name) {
      return 'Hello, $name!';
    }
    
    int add(int a, int b) => a + b;
     

2. 객체지향 프로그래밍(OOP) 개념 학습

객체지향 프로그래밍(OOP)은 현대적인 프로그래밍 패러다임으로, 코드를 모듈화하고 재사용성을 높이는 데 중요한 역할을 합니다. React Native와 Flutter 모두 OOP 개념을 바탕으로 하여 개발됩니다.

2.1 클래스와 객체

클래스는 객체를 생성하기 위한 템플릿입니다. 클래스는 속성(데이터)과 메서드(기능)를 정의하며, 객체는 이 클래스를 기반으로 생성된 인스턴스입니다.

  • 자바스크립트 예제:
    class Animal {
        constructor(name) {
            this.name = name;
        }
    
        speak() {
            console.log(`${this.name} makes a noise.`);
        }
    }
    
    const dog = new Animal("Dog");
    dog.speak(); // Dog makes a noise.
  • 다트 예제:
    class Animal {
      String name;
    
      Animal(this.name);
    
      void speak() {
        print('$name makes a noise.');
      }
    }
    
    void main() {
      var dog = Animal('Dog');
      dog.speak(); // Dog makes a noise.
    }
     

2.2 상속과 다형성

상속은 클래스가 다른 클래스를 확장하여 기존의 기능을 물려받는 것을 의미합니다. 다형성은 같은 메서드가 다양한 클래스에서 다르게 동작할 수 있도록 합니다.

  • 자바스크립트 예제:
    class Dog extends Animal {
        speak() {
            console.log(`${this.name} barks.`);
        }
    }
    
    const myDog = new Dog("Rex");
    myDog.speak(); // Rex barks.
  • 다트 예제:
    class Dog extends Animal {
      Dog(String name) : super(name);
    
      @override
      void speak() {
        print('$name barks.');
      }
    }
    
    void main() {
      var myDog = Dog('Rex');
      myDog.speak(); // Rex barks.
    }
     

3. 간단한 콘솔 애플리케이션 작성 실습

이제 기본 문법과 OOP 개념을 학습했으므로, 간단한 콘솔 애플리케이션을 작성하여 학습한 내용을 실습해 봅시다. 예를 들어, 사용자가 입력한 이름을 받아서 환영 메시지를 출력하는 프로그램을 만들어보겠습니다.

자바스크립트 예제:

const readline = require('readline').createInterface({
    input: process.stdin,
    output: process.stdout
});

readline.question('What is your name? ', name => {
    console.log(`Hello, ${name}! Welcome to our game development journey.`);
    readline.close();
});

다트 예제:

dart
import 'dart:io';

void main() {
  stdout.write('What is your name? ');
  String name = stdin.readLineSync();
  print('Hello, $name! Welcome to our game development journey.');
}
 

이 간단한 콘솔 애플리케이션을 통해, 여러분은 입력을 받고 출력하는 기본적인 프로그램을 작성할 수 있게 됩니다. 이 과정에서 학습한 내용을 바탕으로 더 복잡한 애플리케이션을 만들어 나갈 수 있습니다.

728x90