반응형

20201220

어제는 프로그램을 짜는데 해야 할 일 목록을 작성하고는 옆길로 샛다.

흔들리지 않고 즐거운 마음으로 처음부터 끝까지 몰입해서 프로그램을 완성시키는 방법은?

- 자고 일어났을 때처럼 깨끗해진 마음

- 최근에 입력된 자극, 단어 중 지금 목표와 관련이 적고 예전 관심사와 관련된 것,

당장 실행해야 하는 것은 아니지만 목표와 관련 있다고 유혹하는 것들을 처리하는 법,

우선 순위 정하고 미루는 법

- 코끼리를 생각하지 말아야 할 때 외우는 주문, 걱정거리나 잡념을 지우는 주문, 지금 실천하고 목표하는 것 되뇌기

- 프레임 좋은 습관 태도

- 지루한 그림과 글을 완성하는 힘, 태도, 마음가짐

- 목표와 그에 따른 하위 목표들 세우기

- 우선순위 정리, 정돈, 청소

- 코멘트, 주석과 실행 코드 번갈아 작성

- 주기적인 휴식, 충전, 동기부여, 자극, 명상

 

 


글을 완성하는 방법

https://m.hibrain.net/braincafe/cafes/1001/posts/321/articles/49701

대개 글쓰기를 싫어하는 미숙한 필자들은 일단 글쓰기를 시작해야 하는 단계가 되면 첫 문장을 시작하는 데에 상당한 어려움을 겪는다.

시행착오 전략에 따라 첫 문장을 쓰는 데에 많은 시간을 소비하는가 하면, 대번에 완벽한 초고를 써야 한다는 강박증으로 어려움을 겪기도 한다.

또 자료 수집이나 수집된 자료를 바탕으로 한 메모 없이 글을 써야 하기 때문에 순간순간 떠오르는 생각에만 의존해서 글을 쓸 수밖에 없다.

미숙한 필자들은 대개 글쓰기를 일련의 과정과 절차에 따라 수행하기보다는 글을 쓰는 데에 거의 시간을 들이지 않으면서 앉은 그 자리에서 떠오르는 생각을 중심으로 글을 완성해 버린다.

항상 시간에 쫓겨서 글쓰기를 시작하기 때문에 글을 꼼꼼히 고쳐 쓰는 경우가 거의 없으며 대개 초고가 그대로 제출본이 된다.

능숙한 필자의 쓰기 과정

- 글쓰기 과정 자체를 일련의 목표 지향적 활동으로 파악한다.

- 작업 구상 단계부터 자기 나름대로 목표 의식을 가지고 글의 핵심적 주제를 설정하고 이를 중심으로 사고의 흐름을 전개해 나간다.

- 일단 글쓰기의 주제와 방향이 잡히면 충분한 시간을 두고 일찌감치 글쓰기 과정에 착수하여 계획하기 단계에 많은 시간과 공을 들인다.

- 주제와 관련된 충분한 자료를 전략적으로 찾아서 읽고 이를 바탕으로 틈틈이 메모를 하고 개요를 작성한다.

- 머릿속에 있는 막연한 사고를 자료를 찾아서 읽어 나가는 과정을 통해서 더욱 구체화하는 것이다.

- 전략적인 사고를 하고 이를 바탕으로 글의 가닥을 잡아 나간다.

- 첫 문장을 어떻게 써야 할까를 고심하기보다는 고쳐 쓰기 단계를 염두에 두고 글에서 해야 할 이야기들의 내용을 중심으로 일단 초고 형태로 글을 쓴다.

- 글의 개요와 메모에 의지해서 글을 쓰기 때문에 글이 좀처럼 원래 목표했던 중심 생각에서 벗어나 엉뚱한 방향으로 나아가지 않는다.

- 능숙한 필자들은 계획하기 단계 못지않게 고쳐 쓰기 단계에 많은 시간을 들인다.

- 의미 구성 행위를 본질로 하는 글쓰기 능력은 단순히 의미를 문자 언어로 표현하고 전달하는 차원을 넘어서서 쏟아져 나오는 정보를 처리하고 이를 바탕으로 유용한 지식을 새롭게 창출해 내는 지식 생산 능력의 의미까지도 포함

- 표현 능력의 하나인 글쓰기 능력은 자신의 생각을 논리적인 언어로 정확하고 설득력 있게 전달할 수 있는 의사소통 능력일 뿐만 아니라 사고를 언어로 옮겨서 표현해 내는 고등 정신 기능을 바탕으로 하는 고차원적인 문제 해결 능력이라 할 수 있다.


리펙토링(일단 쓰고, 고쳐 쓰기)

프로그램 구조

- 입력. 변수 세팅

- 처리. 자동선택

- 출력. 다듬기

프로그램 작성 규칙

- 타인과 미래에 재활용하고 유지 보수할 자신을 위해

문법, 형식에 맞게 이쁘게 잘 짜자

- 꼼꼼하게 코멘트, 주석 달기

- 중간중간 오류 체크 추가

 

- 일단 즐겁게 프로그래밍하기, 과정과 일을 즐기기

- 넘어지는 것에 대한 두려움 없이 자신감 있게 시작하기

- 마주하는 수많은 오류와 난관은 당연한 것이므로 스트레스받지 말고 극복하기

- 원하는 것을 찾는 끈질긴 질문과 아이디어로 목표하는 기능 구현 달성하기

- 기능에 맞고 누가 봐도 보기 좋고 이쁜 디자인 찾기

1. 질문하고, 찾고, 선택하기 반복

2. 목표에 따른 하위 목표와 중간 결과물을 완성하는 성취감 반복

3. 모으고, 정리, 정돈, 청소, 비우고 버리기 반복


https://hoonihoon.tistory.com/entry/1-%EB%A6%AC%ED%8E%99%ED%86%A0%EB%A7%81%EC%9D%B4%EB%9E%80

 

1. 리펙토링이란?

- 소프트웨어를 보다 쉽게 이해할 수 있어야 하고, 동작 변화 없이 내부 구조를 변경하는 것.

2. 리펙토링의 목적?

- 프로그램을 빨리 작성할 수 있도록 도와준다.

- 코드 디자인을 개선해준다.

- Bad code -> Good code

3. Bad code 란?

같은 작업을 위해 더 많은 코드 사용, 중복이 많고 이해하기 어렵다.

유지 보수하기에도 어려운 코드.

4. 리펙토링은 언제 하는가?

틈틈이 계속, 기능 추가할 때, 버그 수정할 때, 코드 검토 시에.

5. 리펙토링을 할 수 없을 때는?

1) 디자인 실수가 있어 마음대로 리펙토링을 할 수 없을 때

2) 현재 설계된 구조가 보안 문제, 퍼포먼스 문제 등 중요사항으로 리펙토링을 기대할 수 없을 때.

3) 코드가 처음부터 작성하는 게 나을 정도로 엉망인 경우

4) 현재 코드가 작동하지 않을 경우

5) 마감일이 가까울 경우.

6. 리펙토링 할 나쁜 코드는 왜 발생하는가?

- Copy & paste에 의해 중복 코드 발생.

- 잘못된 변수명, 함수에서 발생. (일관성이 중요 add, register, put, create )

- 특정 클래스 내의 메서드가 동작을 하기 위해 다른 클래스에 있는 정보를 많이 필요로 한경우 ( 메서드를 이동한다.)

- 나쁜 주석

- 너무 긴 메서드, 파라미터

7. 어떤 식으로 리펙토링을 시작해야 되는가?

- 찾기 쉬운 것부터 한다.

- 측정할 수 있는 것 (주석, 긴 메서드, 거대한 클래스, 긴 매개변수)

- 메서드가 하는 일 설명, 블록이 하는일 설명

 


 

python 리펙토링

 

https://python-guide-kr.readthedocs.io/ko/latest/writing/style.html

코드 스타일 — The Hitchhiker's Guide to Python

명쾌한 코드 파이썬으로 어둠의 마법을 부릴 수 있다면, 가장 명쾌하고 간단한 방법을 추천합니다. 나쁜 예 def make_complex ( * args ): x , y = args return dict ( ** locals ()) 좋은 예 def make_complex ( x , y ): return { 'x' : x , 'y' : y } 위의 좋은 코드 예시에서 x와 y는 호출자로부터 직접 값을 받아와 곧바로 딕셔너리로 반환합니다. 이 함수를 쓰는 개발자들은 첫 줄과 마지막 줄을 읽는 것만으로 무엇을 하는 함수인지 정확히 알 수...

python-guide-kr.readthedocs.io

http://pythonstudy.xyz/python/article/511-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%BD%94%EB%94%A9-%EC%8A%A4%ED%83%80%EC%9D%BC

예제로 배우는 파이썬 프로그래밍 - 파이썬 코딩 스타일

파이썬 코딩 스타일 PEP 8 파이썬 코딩 스타일 Python Enhancement Proposal 8 (PEP 8)은 파이썬 코딩 스타일에 대한 가이드를 제시하고 있다. PEP 8은 2001년 귀도 반 로썸에 의해 처음 제안되었으며, python.org 의 PEP 링크에 자세히 소개되어 있다. 파이썬 프로그래머들은 일반적으로 이러한 PEP 8 코딩 스타일에 따라 프로그래밍을 하고 있는데, 이러한 일관된 코딩 스타일을 적용하는 것은 자신의 코드를 명료하게 할 뿐만 아니라 특히 다른 개발자 혹은 커뮤니...

pythonstudy.xyz

반응형
반응형

canvas -> image sprite -> drage 이용하여 단어와 그림을 잇는 게임입니다.

앱인벤터 (한글 화면)에서 작성하였습니다.

http://ai2.appinventor.mit.edu/?locale=ko_KR

 

http://ai2.appinventor.mit.edu/?locale=ko_KR

 

ai2.appinventor.mit.edu


앱 구상

[참고 앱]

https://youtu.be/dkUkH9D1JrY

 

기본기능

1. canvas에 있는 이미지를 드래그하여 움직일 수 있도록 한다.

2. 서로 충돌할 경우 연결된 이미지이면 정답 처리한다.

3. 전체 성공시 축하 메시지와 함께 음성도 출력한다.


앱 제작

1. 화면 디자인

2. 블록 코딩

3. 실행 화면

4. 프로그램 소스

ImageWordGame1.aia
0.36MB


관련 글

앱인벤터 소개

https://blog.naver.com/sfex/221994450104

 

기억 퍼즐게임

https://blog.naver.com/sfex/222011042941

 


 

반응형
반응형

이미지 카드 위치를 기억했다가 같은 이미지끼리 뒤집는 퍼즐 게임입니다.

앱인벤터 (한글 화면)에서 작성하였습니다.

http://ai2.appinventor.mit.edu/?locale=ko_KR

 


 

앱 구상

[참고 앱]

https://youtu.be/sEPxqpFZit8

 

기본기능

1. 카드 랜덤 배열

2. 같은 카드면 OK

3. 타이머를 이용하여 잠깐만 보여주기


앱 제작

1. 화면 디자인

- 타이머 간격을 700 (0.7초)로 설정하였습니다. (타이머(시계1)을 활성화하면 설정 타이머간격마다 '타이머가 작동할때'를 실행합니다.)

2. 블록 코딩

- 전역변수 설정 및 화면 처음시 실행 부분입니다.

- 첫 번째 선택, 두 번째 선택에는 게임 진행하는 동안 첫 번째, 두 번째 선택한 버튼을 저장합니다.

- 매칭카운터는 매칭에 성공한 횟수를 저장합니다. 3이 되면 게임 성공입니다.

- 게임판에는 임의로 선택한 버튼과 그림을 저장합니다. (버튼으로 검색하여 그림을 불러올 수 있습니다.)

- 매칭완료에는 매칭에 성공한 버튼들을 저장합니다.

- 버튼들은 게임 버튼들을 리스트로 저장하여 일괄로 처리할 수 있도록 합니다.

- Sreen1 이 처음 시작되면 초기화 함수를 실행합니다.


- 초기화 함수입니다.(게임을 새로 세팅합니다.)

- 버튼 활성화를 (마우스 오른 버튼 -> 메뉴 -> 일반만들기) 일반화하여 모든 게임 버튼을 일괄로 처리합니다.

- 그림 3개를 각 2개씩 랜덤 한 위치에 배치합니다.


​- 버튼 클릭 했을 때 실행

- '버튼 클릭시'를 역시 일반화(버튼 클릭시 -> 마우스 오른 버튼 -> 메뉴 -> 일반만들기) 하여 모든 버튼에 대해 동작을 일괄 설정합니다.

(만약(if) 조건문으로 리셋 버튼은 초기화 호출 나머지 게임 버튼은 뒤집기 함수를 호출합니다.


- 뒤집기 함수입니다.

- 누른 버튼의 설정된 이미지를 보여주고, 다시 클릭하지 못하도록 비활성화합니다.

 

- 첫 번째 선택이면 누른 버튼을 첫 번째 선택에 저장합니다.

- 두 번째 누른 것이라면(첫 번째 누른 것이 아니면) 저장된 첫 번째 누른 버튼과 비교하여 같으면 (매칭에 성공하면)

- 매칭카운터를 1 증가

- 첫 번째 선택 변수를 초기화

- 첫 번째 선택과 두 번째 선택을 매칭완료에 저장

- 첫 번째 선택과 두 번째 선택이 달라서 매칭에 실패하면

- 전체 게임 버튼을 누르지 못하게 비활성화

- 타이머를 동작시켜 잠시만 보여줍니다.

- 매칭카운터가 3에 도달하면 (다 찾았으면) 성공 메시지를 보여줍니다.


- 타이머 활성시 일정 간격마다 실행되는 부분입니다. 

- 매칭에 실패 시 잠시만 보여주기 위한 타이머 내용입니다.

- 타이머가 설정한 시간에 도달하면

- 첫 번째, 두 번째 선택 버튼을 다시 뒤집기

- 전체 게임 버튼에 대해서 찾은 버튼 이외 버튼은 다시 누를 수 있도록 활성화

- 타이머 다시 멈춤

- 첫 번째, 두 번째 선택 변수 초기화


3. 실행 화면

 

4. 프로그램 소스 aia 파일

memory_puzzle.aia
0.02MB


관련 글 : 앱인벤터 소개

https://blog.naver.com/sfex/221994450104

 


 

반응형

+ Recent posts