포켓몬 픽셀아트 v2.1 업데이트 후기
·
C#
1년 반의 세월을 건너 드디어 다음 버전으로 업데이트를 하게 되었다. 실용성을 갖고 지속적으로 활용될 수 있는 프로그램을 작성, 관리하는 일이 "개발"이라고 한다면 내가 해오는 일들은 개발이라고 보기 어렵다. 돈을 받고 한 일도 아니고 댓가를 바라고 있는 것도 아니지만 비유해보자면 자동차 회사가 차를 만들고 수십년이 지나도록 신형 차를 만들지 않는 것과 똑같다. 나는 프로그램을 만들었고 방치했다. 물론 바빠서도 큰 이유였지만 이걸 업데이트 하는 일이 귀찮았다는 사실을 부정할 수 없다. 그리고 변호하자면 어려운 과정이 있었다. 1. 주석 달기지난 작업에 주석을 충분히 달아놓지 않은 것은 굉장히 멍청한 짓이었다. 1000줄 꼬박 넘는 작은 규모의 프로그램이긴 하지만 정식적인 개발 경험이 없어서 규격화되지 않..
작성한 cs코드를 콘솔 exe실행 파일로 만들기
·
C#
교회에서 중고등부 아이들 대상으로 성경읽기를 진행중이다. 매주 진도를 확인하는데 이게 전체 학생 대상 권, 장 표시가 되도록 성경읽기표를 만들기에는 조금 무리가 있어 진도를 백분율로 나타내도록 하기로 했다. 문제는 이것을 매주 누군가 일일히 계산해내야 한다는 점. 그냥 코드를 짜버리기로 했다. 그렇게 작성된 장황한 코드. 이 코드를 실행하려면 난 vs를 켜면 되지만 전도사님은 이런 거 알려드리면 아마 머리가 아프시겠지. 그래서 실행파일을 만들어 드리기로 했다. 먼저 내가 작성한 코드의 경로를 찾는다. 주소표시줄을 클릭해서 경로 통째로 복사해준다. Developer Command Prompt를 실행한다. 디렉토리를 바꿔야한다. cd명령어를 쓰고 한칸 띄어서 경로를 그대로 복사한다. 그리고 엔터. 디렉토리가..
정규표현식
·
C#
1013번: Contact 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 전파를 표현하는, { 0, 1 }만으로 이루어진 문자열이 공백 없이 주어진다. 문자열 길이는 (1 ≤ www.acmicpc.net 2671번: 잠수함식별 입력에 들어있는 스트링을 읽고, 이것이 잠수함의 엔진소리를 나타내는 스트링인지 아니면 그냥 물속의 잡음인지를 판정한 후, 잠수함의 엔진 소리에 해당하는 스트링이면 "SUBMARINE"을 출력하고 www.acmicpc.net Regex 기초 - C# 프로그래밍 배우기 (Learn C# Programming) Regular Expression (Regex 클래스) 흔히 복잡한 문자열 처리를 위해 Regular Expression을 ..
얕은 복사와 깊은 복사
·
C#
배열이나 클래스 등 참조형식의 자료 구조들은 대충 등호로 값을 넣어주면 이게 겉으로는 잘 돌아가는 것 처럼 보이지만 사실 안에서 지들끼리 실시간 배끼기를 한다. int[] a = { 1, 2, 3, 4, 5 }; int[] b = new int[5]; b = a; b[0] = 10; foreach(int n in a) { Console.Write($"{n}, "); } Console.Write('\n'); foreach(int n in b) { Console.Write($"{n}, "); } // 결과 // 10, 2, 3, 4, 5 // 10, 2, 3, 4, 5 b = a를 해줬을 때 a의 값을 끌어오는 것이 아닌 a의 값이 저장된 메모리 상의 물리적 주소를 b에 담아오기 때문이다. a의 값을 바꾸든..
자료구조의 class
·
C#
여러 종류의 class가 있다. 이미 정의되어있는 클래스 라이브러리도 있고 여기에 개발자가 필요한 만큼의 기능을 더 추가하는 것도 가능하다. int, string처럼 자료구조를 새로 선언하는 것도 할 수 있다. 내가 circle 이라는 클래스를 선언하면 이 안에 원을 구성하는 데 필요한 두 가지의 요소를 넣어줄 수 있다. 중심의 위치 X, Y, Z, 원의 반지름 R, 원의 두께 T, 각 축과의 기울기 aX, aY, aZ 이런 식으로. 백준 문제 풀 때 좌표 값이나 그래프 등의 상태를 복잡하게 하나하나 따로 저장하기보다 클래스로 묶어 클래스를 인스턴스화 하는 것이 간편하다. public class Location { private int x, y; public Location(int X, int Y) { ..
Winform 자식폼으로부터 부모폼으로 데이터 보내기
·
C#
대화상자를 띄우고 필요한 정보를 입력받아 부모폼으로 불러와야하는 경우, event와 delegate 를 통해 데이터를 보낼 수 있다. // 자식폼 using System; namespace child { public class form2 { public delegate void DataHandler(string name, int number); public event DataHandler data_handler; public child() { InitializeComponent(); this.data_handler("name", 1); this.Close(); } } } // 부모폼 using System; namespace parent { public class form1 { public parent(..
StreamReader, StreamWriter / Graphics, Bitmap 클래스
·
C#
개발이라고 하기에 작은 프로젝트였지만 아무튼, 이번 프로젝트에서 처음 배웠는데 가장 많이 사용한 클래스가 두 가지였다. 첫 번째는 StreamReader, StreamWriter 클래스. csv 파일 불러오기와 저장하기에 쓰였다. 깃허브에서 얻어온 포켓몬 스트라이프의 파일명이 모두 영어였다. 영어를 한글로 번역하기 위해 파일명을 불러온 후에 단어 쌍을 csv 파일로 만들고 다시 불러와야했다. using System.IO; using System.Collections.Generic; Dictionary dict = new Dictionary(); StreamReader sr = new StreamReader(string path); string str = string.Empty; while((str = s..
포켓몬 픽셀아트 생성기 v2.02
·
C#
원하는 기능을 모두 구현하진 못했지만 일단 필요했던 기능은 모두 담아 완성했습니다. 1번부터 905번까지의 도감 번호를 기반으로 난수를 뽑습니다. 30배로 뽑히는 안농과 70배로 뽑히는 마휘핑은 이제 없습니다. 시리즈에 합류한 세대를 구분해 뽑을 수 있는 방식입니다. 모든 체크박스를 해제하면 뽑기 버튼이 사라집니다. 포켓몬의 세대 구분은 나무위키를 참조했습니다. 이로치 확률은 0.1%로 표기되어있지만 실제로는 5%입니다. 우측 상단의 콤보박스에서 폼체인지, 픽셀아트 난이도(색상 수)를 조절할 수 있습니다. 프린트 폼을 구현해보려 노력했지만 해상도를 맞추는데 어려움이 있었습니다. 그냥 이미지로 저장하도록 했습니다. 저장하기를 누르면 픽셀아트로 만들어 이미지를 저장합니다. 바탕화면에 저장 체크박스를 체크하면..
전라남도교육지원청
'C#' 카테고리의 글 목록