본문 바로가기
반응형

Programming307

고도엔진 2D 슈팅게임 - 6 아머, 파괴 수정 - 스크립트에 체력(armor) 변수를 설정 - "ship"그룹에 추가 - 체력이 0 이하로 가면 삭제되는 set_armor함수 추가 수정 - 스크립트에 체력(armor) 변수를 설정 - "enemy"그룹에 추가 - 체력이 0 이하로 가면 삭제되는 set_armor함수 추가 - enemy_kamikaze.tscn의 Armor값은 2로 설정 - enemy_clever.tscn의 Armor값은 6으로 설정 - laser_ship.tscn을 불러와서 기존의 laser.gd스크립트를 제거 - 새로운 스크립트 laser_ship.gd 생성 - 속도를 -350으로 설정 - "area_enter"이벤트 발생 시 "_on_area_enter"함수와 연결 - 접촉한 외부물체가 "enemy"이면 Armor를 -1 차.. 2022. 1. 7.
고도엔진 2D 슈팅게임 - 5 Enemy생성2 - Laser 씬을 상속하여 새로운 씬 생성 - New Inherited Scene... > laser.tscn - 노드 이름을 laser_enemy로 변경하고, laser_enemy.tscn으로 저장 - sprite에 enemy_laser.png 지정 - shape에 rectangleShape2D 지정 후 Edit - Extents: (4.5, 7) 지정 - vis_notifier의 Rect값 지정(x:-4.5, y:-7, w:9, h:14) - 속도 (0,150) 지정 - 아래방향으로 이동하는지 테스트 - 원점으로 복귀시켜 놓음 - 상속으로 새로운 씬 생성 > enemy.tscn 선택 - 노드 이름을 enemy_clever로 변경 - 다른 이름으로 저장하기 > enemy_clever.tscn으로 저장.. 2022. 1. 6.
고도엔진 2D 슈팅게임 - 4 Laser발사 - Flare 씬 생성 - sprite 노드 생성 후 이름을 flare로 변경 - flare 첫번째 이미지를 지정해줌 - 애니메이션 노드 추가 후 이름을 anim으로 변경, fade_out 애니메이션 추가 - 0초에서 flare 스프라이트의 Opacity 1로 하여 키를 추가 (Modulate의 Opacity속성을 255) - 0.1초에서 Opacity 0으로 하여 키를 추가 (Modulate의 Opacity속성을 0) - length를 0.1초로 변경 - flare sprite노드에 스크립트 추가(flare.gd) 시그널 "finished"은 "animation_finished"로 변경 - Laser 씬 생성(enemy용, player용 공통), Area2D 노드를 추가 후 laser로 변경 - Spr.. 2022. 1. 4.
고도엔진 2D 슈팅게임 - 3 Enemy생성1 2 타입의 Enemy 생성 Area2D 노드를 추가하여 enemy로 변경 - colisionShape2D 추가 > RectangleShape2D > Extents (16,16) 설정 - enemy 스크립트 추가 - y 속도 100으로 설정 - 화면을 넘어가면 삭제되도록 수정 - 첫번째 enemy: enemy_kamikaze - sprite에 enemy_kamikaze 이미지를 불러옴 - CollisionShape2D에서 Make Unique를 설정하고, 사이즈를 12,16으로 변경 - 속도를 350으로 설정 - enemy spawn - 자주 사용하는 함수를 utils.gd로 묶어서 스크립트 수정 # script: utils extends Node var main_node setget , _get_main.. 2022. 1. 4.
고도엔진 2D 슈팅게임 - 2 마우스 컨트롤과 배경 마우스 따라가는 동작 스크립팅 (수정..'2024.01.09) godot 버전 상승으로 get_pos()함수는 사용되지 않습니다. 그 외의 변경사항은 아래와 같습니다. - get_pos() --> get_global_pos() - set_pos() --> set_position() - view_size.width --> view_size.x extends Area2D func _ready(): set_process(true) pass # Replace with function body. func _process(delta): var motion = (get_global_mouse_position().x - get_global_position().x) * 0.2 translate(Vector2(motion.. 2022. 1. 4.
고도엔진 2D 슈팅게임 - 1 프로젝트 세팅과 Player 이런거 한번 만들어보겠습니다. (https://www.youtube.com/watch?v=Z9W6dlP-RB8&list=PLv3l-oZCXaqkUEqrLsKJIAhAxK_Im6Qew) 1. Project Settings 2022. 1. 3.
Ubuntu Gnome 런처 아이콘 만들기 우분투 Gnome 런처?에서 보여지는 아이콘을 만들고자 합니다. /usr/share/applications/ 폴도 안에 .desktop파일을 만들면 됩니다. 파일 내용은 아래와 같이 만듭니다. [Desktop Entry] Name=Defold Type=Application Terminal=False Exec=/home/seaofcalm/Program_Install/Defold/Defold Icon=/home/seaofcalm/.local/share/icons/hicolor/scalable/apps/defold.png Type은 Application으로, Terminal은 False로 Exec는 실제 실행파일 경로, Icon은 아이콘 경로.....뭐...보면 알듯.. 2021. 12. 22.
Godot 시작하기#4 - HUD Scene 및 마무리 1. HUD Scene 추가 HUD는 Head Up Display의 약자인데 게임의 요소와는 상관없는 UI 작성을 위한 부분입니다. Scene을 하나 추가한 뒤 CanvasLayer노드를 추가합니다. HUD에서 표시할 내용으로는 Score, "Game Over" 또는 "Get Ready!" 같은 문구, "Start" 버튼입니다. 즉 레이블과 버튼 요소가 필요합니다. 아래의 노드들을 CanvasLayer노드 하위에 자식노드로 추가해줍니다. ScoreLabel (Label) Message (Label) StartButton (Button) MessageTimer (Timer) 2. 폰트 폰트를 추가합니다. 경로는 인스펙터 창에서 Control > Theme Overrides > Fonts > 새 Dynami.. 2021. 12. 22.
Godot 시작하기#3 - Main Scene 1. Main Scene 생성 모든 요소들을 모을 Main Scene 을 생성합니다. 새 씬 생성후 "Node"라는 이름의 노드를 추가해줍니다. 그리고 "인스턴스화"아이콘을 클릭하여 Player.tscn을 불러옵니다. 그 외에는 자식노드 추가 기능에서 Timer 3개, Position2D 노드를 추가해주고, 각각의 이름을 아래와 같이 수정해줍니다. MobTimer - 가장자리에서 Mob이 생성되는 시간 통제 (0.5초) ScoreTimer - 매초마다 점수 증가시킴 (1.0초) StartTimer - 시작하기 전에 지연 시간 부여 (2.0초) StartPosition - Player의 시작 위치(240, 450) 2. Mob 생성 Main 노드가 Mob을 가장자리를 따라 랜덤한 위치에서 생성합니다. 이를.. 2021. 12. 22.
Godot 시작하기#2 - Mob Scene 1. 장애물 신 추가 웹 설명서를 그대로 번역하면 적 신으로 나오는데, 마음에 들지않아 장애물이라고 표현하겠습니다. 장애물에 해당하는 몹(Mob)들은 화면 가장자리 4군데에서 랜덤하게 생성되고, 직선방향으로 움직이도록 할 계획입니다. 우선 Player에서 했던 것과 마찬가지로 새 신(scene)을 추가하고 Rigidbody2D 노드를 추가합니다. 그리고 이름은 Mob으로 바꿔주겠습니다. 그리고 아래의 버튼(잠금열쇠 옆에있는거..)을 클릭하여, 추가되는 자식노드만 따로따로 선택되지 않도록 해 줍니다. 이어서, Gravity Scale을 0으로 해 줍니다. 즉, 중력에 영향을 받지 않게 해줍니다. 이 값이 0이 아닐경우, Mob들은 중력의 영향을 받도록 계산되고, 화면 아래로 떨어지게됩니다. 조금 아래로 내.. 2021. 12. 22.
Godot 시작하기#1 - 프로젝트 설정 및 Player Scene 1. 프로젝트 설정 프로젝트 > 프로젝트 설정을 클릭한 후, display > window메뉴로 가서 width480, height720으로 설정해줍니다. 그리고, Stretch로 내려가서 Mode: 2d, Aspect: keep으로 변경해줍니다. 2. Resource 폴더 추가 dodge_assets 파일은 링크 에서 다운받을 수 있습니다. Godot엔진 홈페이지의 Your First Game 챕터에서 찾을 수도 있습니다. 압축을 풀어서 생성된 프로젝트 폴더에 집어넣으면 아래와 같이 자동으로 프로젝트에 폴더가 추가됩니다. 3. Player 씬 추가 왼쪽 씬 탐색기에서 다른노드 > Area2D검색 >Area2D 를 선택합니다. 노드를 더블클릭하여 이름을 Player로 바꿔줍니다. 그리고 Player.ts.. 2021. 12. 22.
우분투 리눅스 conky-manager2 설치 저장소 찾기가 쉽지않네요... sudo add-apt-repository ppa:tomtomtom/conky-manager sudo apt update && sudo apt install conky-manager2 그리고, 위젯에 요일이 제대로 표시가 안되고 네모로 나타나고 있습니다. 이건, Conky에서 설정한 폰트가 시스템에 없어서 그런건데요. .conky/ 폴더로 들어가면 fonts라는 폴더가 있습니다. 그곳에 있는 폰트 파일들을 /usr/share/fonts로 복사해줍니다. 이상한 것은 해당 위젯의 폰트가 GE_inspera.ttf인데, .conky/Gotham/Gotham파일에 보면 폰트가 GE Inspira로 되어있습니다.(언더바 빠짐). 이부분을 수정하여 GE_Inspira로 바꿔줍니다. 그.. 2021. 12. 8.
우분투 리눅스 삼성 프린터 설치(SL-J1560/J1560W) 삼성 프린터 드라이버를 찾고 있었는데, 삼성 프린터는 HP로 넘어갔다고 합니다. 따라서 프린터 드라이버 설치 시 HP의 잉크젯 JP 1000 시리즈나 또는 비지니스 잉크젯 1000 시리즈를 고르시면 됩니다. 2021. 12. 7.
Golang GUI(Webview) - 다른 프로그램(exe파일) 실행하기 Go언어로 다른 프로그램을 실행시키는 방법을 알아보겠습니다. 이번에도 역시 webview로 GUI를 구성하고, 버튼이 클릭되면 whale 브라우저를 실행하도록 해보겠습니다. 기존에 Webview가 설치되어있다면 다른 라이브러리 설치는 필요 없습니다. 단 os.exec 라이브러리를 사용하므로 임포트..정도는 필요합니다. package main import ( "os/exec" "github.com/webview/webview" ) func main() { w := webview.New(true) defer w.Destroy() w.SetSize(600, 200, webview.HintNone) // Create a GoLang function callable from JS w.Bind("hello", fu.. 2021. 11. 30.
Python - Django 시작하기 4 - oracle DB ORM Join Oracle DB의 테이블을 이용해서 Join하는 방법을 알아보겠습니다. 1. 모델 정의 1:N관계에서 N쪽 테이블(TempDataroomHstry클래스)에 ForeignKey로 1쪽 테이블명(Temp래스)을 지정해줍니다. 이때, 1쪽 테이블의 참조하려는 필드가 Primary Key로 지정되어있으면 상관없지만, 없을 경우 필드 정의에(ForeignKey 함수 내부에서) to__field='목표필드' 를 지정해줘야 합니다. 그리고, db_column='참조칼럼명' 에서 해당 테이블에서 참조할 실제 칼럼(필드)명을 지정해줘야 합니다. (*) Oracle DB에서만 이런 문제가 발생하는 것인지.. 아직은 잘 모르겠습니다. 이것 때문에 한참을 헤메었네요..^^;; 또한 이번의 경우 Temp의 emp_field와.. 2021. 11. 18.
Golang GUI(Webview) - HTML 파일 분리 이번에는 Webview 라이브러리를 사용하면서 HTML 파일을 별도로 분리하는 방법을 알아보겠습니다. 그리고, 좀더 보기좋은 GUI 구성을 위해 부트스트랩도 함께 적용하도록 하겠습니다. 사실 이부분은...CSS 파일을 별도로 인식시켰으면 좋겠지만, 아직까지 별도의 CSS파일을 적용시키는 것은 안되는 것 같습니다. 1. 라이브러리 설치 라이브러리 설치는 이전 강좌를 참고하세요. 2. main.go 파일 작성 main.go 파일에 전체 프로그램 구동을 구현합니다. 아울러, 버튼을 클릭했을 때 동작할 함수(go_hello)를 작성하고, 바인딩해줍니다. Webview라이브러리를 활용하면, go에서 javascript를 실행할 수도 있고, html파일(javascript 포함)에서 go언어를 실행할 수도 있습니다.. 2021. 11. 12.
Golang GUI(Webview) - 시작하기 Go언어 GUI 라이브러리 중 Webview를 사용해서 데스크탑 앱을 만들어보도록 하겠습니다. Webview는 HTML로 레이아웃을 구성할 수 있어서 간단한 앱은 쉽게 만들 수 있습니다. 1. 라이브러리 설치 이번엔 리눅스환경에서(우분투 20.04) 라이브러리를 설치하겠습니다. sudo apt-get install libgtk-3-dev sudo apt-get install libwebkit2gtk-4.0-dev go get github.com/webview/webview 2. Sample Project 다음으로 간단히 main.go 파일을 생성하고, 아래와 같이 작성해줍니다. package main import "github.com/webview/webview" func main() { w := web.. 2021. 11. 11.
Python Open API(XML) 활용하기 - 부동산 매매가격 import pandas as pd import requests from bs4 import BeautifulSoup key = '내 서비스키' # url='http://openapi.molit.go.kr:8081/OpenAPI_ToolInstallPackage/service/rest/RTMSOBJSvc/getRTMSDataSvcAptTrade?LAWD_CD=11110&DEAL_YMD=201512&serviceKey='+key url='http://openapi.molit.go.kr:8081/OpenAPI_ToolInstallPackage/service/rest/RTMSOBJSvc/getRTMSDataSvcAptTrade?serviceKey='+key rowList=[] # 전체 행을 저장할 변수 nam.. 2021. 11. 8.
C#(WPF) - VSCode에서 Resource Directory 추가하기 회사에서 Visual Studio를 안사주는데, GUI 프로그래밍은 해야겠고... Visual Studio Code를 이용해 Dotnet Core로 프로그래밍을 하다보니 Resource 추가하는 것도 쉽지 않네요. 잊기전에 적어놓습니다. 예를 들어 아래와 같이 ./Resources 라는 폴더를 프로젝트에 추가할 경우.. .csproj 파일에 태그 부분을 추가해줍니다. WinExe netcoreapp3.1 true runtime; build; native; contentfiles; analyzers; buildtransitive all Always 이제 xaml파일에서 "\Resources\Image.jpg"와 같이 접근할 수 있습니다. (이거 잘 생각 안나면 절대경로로 하면 작동은 합니다.) 2021. 11. 2.
C#(WPF) - GUI 연습하기 2 오늘은 아래 유튜브 영상의 데스크탑 어플리케이션을 구현해보겠습니다. https://www.youtube.com/watch?v=qSP8v8Gi3XU 1. 라이브러리 설치 이번 영상에서는 Material Design과 LiveCharts를 사용합니다. 아래의 명령으로 Package를 설치해줍니다. dotnet add package MaterialDesignThemes --version 4.2.1 // material Design 설치 dotnet add package LiveCharts.Wpf --version 0.9.7 // live chart 설치 또는 Nuget GUI Manager 를 설치 후 Shift + Ctrl + P 로 명령창에서 Nuget 입력 시 나타나는 명령을 수행합니다. 그리고 Nuge.. 2021. 10. 30.
C#(WPF) - GUI 연습하기(with Material Design) 오늘은 아래 유튜브 영상의 데스크탑 어플리케이션을 구현해보겠습니다. https://www.youtube.com/watch?v=sgEhK3mbDYo 1. 라이브러리 설치 이번 영상에서는 Material Design과 LiveCharts를 사용합니다. 아래의 명령으로 Package를 설치해줍니다. dotnet add package MaterialDesignThemes --version 4.2.1 // material Design 설치 dotnet add package LiveCharts.Wpf --version 0.9.7 // live chart 설치 또는 Nuget GUI Manager 를 설치 후 Shift + Ctrl + P 로 명령창에서 Nuget 입력 시 나타나는 명령을 수행합니다. 그리고 Nuge.. 2021. 10. 29.
C#(WPF) - VSCode에서 Material Design 적용하기 VSCode에서 WPF 프로젝트를 하며 Material Design을 적용하는 방법을 알아보겠습니다. 1. Nuget Package Manager GUI 설치 우선 Nuget GUI Manager 를 설치해줍니다. 확작프로그램에서 nuget을 검색하여 설치합니다. 2. Material Design Theme설치 설치가 완료되면 Shift + Ctrl + P 로 명령창에서 Nuget 입력 시 나타나는 명령을 수행합니다. (한번만 수행하면 다음부터는 Shift +Ctrl + P만 눌러도 나타납니다.) 그러면 실행되는 Nuget Package Manager GUI에서 material design을 검색해서 설치해줍니다. 1) Install New Package 탭 2) material design 검색 3) .. 2021. 10. 28.
C#(WPF) - VSCode에서 GUI 시작하기 1. Dotnet Core 설치 .Net Core SDK를 다운로드 받아 설치합니다. .Net Core 3.1 이후에는 .Net 5에 통합되었으므로 최신 버전은 .Net 5 이상을 다운받아 설치하면 됩니다. [다운로드 경로] Download .NET (Linux, macOS, and Windows) Free downloads for building and running .NET apps on Linux, macOS, and Windows. Runtimes, SDKs, and developer packs for .NET Framework, .NET, and ASP.NET. dotnet.microsoft.com 2. 생성 dotnet new wpf ...or... dotnet new winforms ...o.. 2021. 10. 22.
자바(JavaFX) - 계산기 1. main.java package application; import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.stage.Stage; public class Main extends Application { @Override public void start(Stage primaryStage) { try { // fxml layout loader //FXMLLoader loader = new FXMLLoader(); //loader.setLocation(getClass().getResource("MainView... 2021. 10. 18.
자바(JavaFX) - eclipse plugin 및 scene builder 설치 1. JavaFX 플러그인 설치 경로: help > eclipse Marketplace 검색: javafx 2. JavaFX 라이브러리 설치 GlueON JavaFX - Gluon Roadmap Release GA Date Latest version Long Term Support Extended or custom support Details 19 September 2022 (planned) n/a no 18 March 2022 (planned) early access no 17 September 2021 17.0.0.1 (September 2021) until September 2026 upon request details 16 gluonhq.com 3. Scene Builder 설치 GlueON Sc.. 2021. 10. 18.
Python - Django 시작하기 3 - blog app 추가하기 블로그 앱을 추가하도록 하겠습니다. 블로그 앱에서는 메인인 Home.html에서 포스트 클릭 시 포스트를 출력해주는 기능입니다. 1. blog app 추가 블로그 앱을 생성해줍니다. django-admin startapp blog 2. mysite/settings.py 수정 블로그 앱을 등록해줍니다. INSTALLED_APPS = [ 'blog.apps.BlogConfig',# 추가 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ] 3. blog/models.py .. 2021. 10. 13.
Python - Django 시작하기 2 - start bootstrap template 적용 Start Bootstrap에서 템플릿을 받아와서 메인 페이지를 구성하겠습니다. 1. Start Bootstrap 템플릿 다운로드 우선 Google에서 start bootstrap으로 검색하여 해당 사이트로 이동합니다. 다음으로 Themes 메뉴를 클릭한 다음, Free 옵션을 선택(Pro 해제) 하여 무료 옵션 중에서 적당한 테마를 고릅니다. 클릭하여 나타나는 상세 페이지에서 Download를 해 줍니다. 그리고 Template에서도 블로그용 template를 받아줍니다. 다운로드 받은 Theme 파일은 아래와 같이 static폴더와 templates폴더에 나누어 넣어줍니다. index.html 파일은 home.html로 이름을 바꾸어줍니다. 2. home.html 파일 수정 파일 링크를 참조하는 "s.. 2021. 10. 13.
Python - Django 시작하기1 - 설치 1. 프로젝트 생성 ( 가상환경 생성) 2. 라이브러리 설치 pip install django 3. Django 프로젝트 설치 현재 폴더에 ( . ) mysite라는 프로젝트를 생성해줍니다. 이 경우 manage.py파일이 현재 폴더에 생성됩니다. (현재 폴더를 지정하지 않으면 한단계 더 아래 폴더에 프로젝트 및 manage.py 파일을 생성합니다. ) django-admin startproject mysite . 4. setting.py 수정 DB / Template / Media / Static 관련된 폴더들을 만들고, 이들 경로를 BASE_DIR을 기준으로 지정해줍니다. 그리고 TIME_ZONE, USE_TZ 값을 수정해줍니다. """ Django settings for mysite project... 2021. 10. 13.
Python 키보드로 소리내기 피아노 연주하기 키보드 입력에 맞추어 비프음을 내도록 하겠습니다. 이번 프로그램을 위해서는 비프음을 내도록 하는 windsound 모듈과 키보드 인풋을 받아들이는 pynput 모듈이 필요합니다. 그 중 windwound 모듈은 기본으로 내장되어있으니 pynput 모듈만 설치해주도록 합니다. 1. 라이브러리 설치 pip install pynput 2. pynput모듈 pynput 모듈에서는 on_press 이벤트와 on_release 이벤트에 대해 리스너를 통해 입력받는 방법이 있습니다. from pynput import keyboard def on_press(key): print('Pressed Key: %s' % key) def on_release(key): print('Pressed Key: %s' % key) if.. 2021. 10. 13.
파이썬 tkinter 로 둥근버튼(Round button) 구현하기 이전 포스팅의 투명한 배경에 이어, 둥근 버튼 구현하기를 알아보겠습니다. 요즘 tkinter와 kivy를 번갈아가며 사용해보고 있는데, 서로 장단점이 존재하네요. 어느것도 완벽한게 없는듯 합니다. tkinter는 둥근버튼이 없어서 별도로 구현해야 하는 반면 투명한 배경처리가 가능하고, kivy는 투명한 배경은 안되도 둥근버튼은 쉽게 구현이 되네요. import tkinter as tk root = tk.Tk() # root.attributes('-alpha', 0.3) # 앱 전체가 투명해짐 root.wm_attributes("-transparentcolor", "white") canvas = tk.Canvas(root, width=600, height=300, bg='white') canvas.grid.. 2021. 9. 26.
반응형