Coding/JavsScript 삽질기2019. 11. 14. 09:43

 
경고  
  • 주인장은 자바스크립트 초보입니다.  
  • 자바스크립트 고수의 비급을 원하시는 분은 다른 자료를 참고 하시기 바랍니다.  
  • 과도한 기대는 과도한 실망을 가져옵니다.    
  • 본 강의는 자바스크립트만 사용합니다.  
  • 크롬에서의 동작만 보장 합니다.  
  • Canvas 기초 사용법은 구글링하시면 친절한 강의가 많습니다
 

3.1  painter.js 파일 생성  


먼저 javascript를 구현하기 위한, painter.js 파일을 만듭니다.  
 
 
 

3.2  기본설계  


painter app의 기본 자료형을 설계 합니다.  

위 내용을 UML로 표시하면 아래와 같습니다

위 UML을 코드로 구현하면 아래와 같습니다. 

 

맘에 드셨다면 공감 버튼 '꼭' 눌러주세요! 댓글과 질문은 늘 환영합니다.

Posted by chobocho
Coding/JavsScript 삽질기2019. 11. 13. 00:37

소개:  https://chobocho.tistory.com/2461396

실행하기: http://www.chobocho.com/javascript/painter.html

전체 소스코드: https://github.com/chobocho/painter


 

경고  

  • 주인장은 자바스크립트 초보입니다.  

  • 자바스크립트 고수의 비급을 원하시는 분은 다른 자료를 참고 하시기 바랍니다.  

  • 과도한 기대는 과도한 실망을 가져옵니다.    

  • 본 강의는 자바스크립트만 사용합니다.  

  • 크롬에서의 동작만 보장 합니다.  

 

 

[강의 001]( https://chobocho.tistory.com/2461414)에서 구상한 화면을 구현하면 아래와 같습니다.  

 

 

화면은 크게 3개의 DIV로 구성되어 있습니다.  

자세한 내용은 아래 코드를 참고 하시면 됩니다.  

 

https://github.com/chobocho/painter/tree/master/doc/tutorial/002/src

 

Posted by chobocho
Coding/JavsScript 삽질기2019. 11. 12. 09:20

https://github.com/chobocho/painter/blob/master/doc/tutorial/001/001.md


Javascript로 그림판 만들기 001
 
모든 프로그래밍의 시작은 요구사항 분석 입니다.
UML 툴을 이용하여 머릿속에 존재하는 그림판의 요구사항을 정리해 봅니다
 
 
요구사항이 정리 되었으면, 만들고자 하는 그림판의 모습을 먼저 그려 봅니다.
 
 
 

 

Posted by chobocho
Coding/JavsScript 삽질기2019. 4. 28. 11:23

자바스크립트를 공부하면서, Canvas를 이용하여그림판을 만들어 보기로 했다.

완성된 그림판은 아래와 같다.

http://www.chobocho.com/javascript/painter.html

실행하기: http://www.chobocho.com/javascript/painter.html

소스코드 위치: https://github.com/chobocho/painter


1. 구현목표

a. 기본 그림판 기능

b. 이미지 저장 기능

c. 이미지를 Text로 저장하기

d. Text로 저장된 이미지를 불러오기

 

 

2. 어떻게 만들었나?

https://chobocho.tistory.com/2461414

Posted by chobocho

REST (REpresentational State Transfer) 

HTTP Method
CRUD
POST
Create
Get
Read
PUT
Update
DELETE
Delete

Resource-based architecture
  • 관용적으로 API 이름에 동사 보다는 명사를 사용 함

6가지 제한 조건

  • Unifrom interface
    • HTTP 표준만 따르면 어떤 플랫폼에서도 사용 가능 ( HTTP+JSON / HTTP+XML )
  • Stateless
    • API 서버는 상태 정보를 저장 하지 않음
  • Client-server
  • Cacheable
  • Layered system
  • Code on demand


참고 : 

Posted by chobocho

'Coding > JavsScript 삽질기' 카테고리의 다른 글

REST (REpresentational State Transfer)  (0) 2018.07.04
Chobocho Calc 2  (0) 2017.03.31
Sam Loyd's unsolvable 15-puzzle  (0) 2017.02.05
Posted by chobocho
Coding/JavsScript 삽질기2017. 3. 31. 00:45

* Javascript로 만든 계산기

http://www.chobocho.com/javascript/calc.html


* 문법

   # : 주석

   변수 수식 ::= 변수에 수식을 대입한다

   = 수식 ::= 수식을 계산한다 


* Source : https://github.com/chobocho/Calc

'Coding > JavsScript 삽질기' 카테고리의 다른 글

공백을 제거해주는 스크립트  (0) 2018.04.02
Sam Loyd's unsolvable 15-puzzle  (0) 2017.02.05
Puzzle game  (0) 2017.01.22
Posted by chobocho



[ http://www.chobocho.com/javascript/puzzle_4x4_impossible.html ]

'Coding > JavsScript 삽질기' 카테고리의 다른 글

Chobocho Calc 2  (0) 2017.03.31
Puzzle game  (0) 2017.01.22
Simple calculator  (0) 2016.10.28
Posted by chobocho
Coding/JavsScript 삽질기2017. 1. 22. 01:26


http://www.chobocho.com/javascript/puzzle.html



Javascript로 만든 puzzle 게임을 업데이트 했다. 


1) 타일이 올바른 위치에 오면 녹색으로 배경화면이 바뀌도록 개선

2) 타일을 다 맞추었을 때 화면 업데이트 오류 수정

 

'Coding > JavsScript 삽질기' 카테고리의 다른 글

Sam Loyd's unsolvable 15-puzzle  (0) 2017.02.05
Simple calculator  (0) 2016.10.28
Clock  (0) 2016.10.25
Posted by chobocho
Coding/JavsScript 삽질기2016. 10. 28. 01:28



<HTML>

    <head>

        <title>Chobocho's Simple Calculator</title>

            <style>

                .tile {

                  text-align:center;

                  width:40px;

                  height:40px;

                  font-size:24px;

                  background-color:"white";

                  border:1px solid black;

                  box-shadow:black 1px 1px;

                }

                

                textarea {

                  height:100px;

                  width:200px;

                  text-align:right;

                  font-size:24px;

                  border:1px solid black;

                  box-shadow:black 1px 1px;

                  padding:2px;

                }

            </style>       

        

        <script language="JavaScript">

            var sum = 0;

            var ret = "";

            var keypadValue = [ "AC", "←", "(", ")", "7", "8", "9", "÷", "4", "5", "6", "×", "1", "2", "3", "-", "0", ".", "=", "+" ];

            

            function init() {

                var table = document.getElementById("keypad");


                

                window.onkeydown = onKeyDown;

                window.onkeyup   = onKeyUp;

                

                for (var i = 0; i < 5; i++) {

                    var tr = document.createElement("tr");

                    for (var j = 0; j < 4; j++) {

                        var td = document.createElement("td");

                        td.className="tile";

                        var idx = i*4 + j;

                     

                        td.value = idx;

                        td.index = idx;

                        td.textContent = keypadValue[idx];

                        td.onclick = onClick;

                        tr.appendChild(td);

                    }

                    table.appendChild(tr);

                } 

            }  

            function onKeyUp(e) {

            }

            function onKeyDown(e) {

            }

            function onClick(e) {

               var clkTile = e.srcElement.index;

               var isClickEqual = false;


               switch(clkTile) {

               case 0 : // AC

                    sum = 0;

                    ret = "";

                    break;

               case 1 : // <-

                    ret = ret.slice(0,-1);

                    break;

               case 2 : // (

               case 3 : // )

               case 4 : // 7

               case 5 : // 8

               case 6 : // 9

               case 7 : // ÷

               case 8 : // 4

               case 9 :

               case 10 :

               case 11 : // x

               case 12 : 

               case 13 :

               case 14 :

               case 16 : // 0

               case 19 : // +

                    ret = ret + keypadValue[clkTile];

                    break;

               case 15 : // -

                    if (ret == "") {

                        ret = "-";

                    } else {

                        ret = ret + "-";

                    }

                    break;

               case 17 : // .

                    if (ret == "") {

                        ret = "0.";

                    } else {

                        ret = ret + ".";

                    }

                    

                    break;

               case 18 : // =

                    if (ret == "" && sum != 0) {

                        ret = sum;

                    } else {

                        ret = ret.replace(/×/g, "*").replace(/÷/g, "/");

                        try {

                            sum = eval(ret);

                        } catch(e) {

                            sum = "Error";

                        }

                        ret = "";

                    }

                    isClickEqual = true;

                    break;               

               default:

                   break;

               }

               console.log("Exp : " + ret + " Sum : " + sum);

               

               document.getElementById("result").value = isClickEqual ? sum : ret;

            }         

        </script>

    </head>

    <body onload="init()">

         <table id="keypad" align="center">

            <tr>

                <td colspan=4>

                <textarea id="result" disabled=true cols="35" rows="1"></textarea>

                </td>

            </tr>

         </table>

    </body>

</HTML>

'Coding > JavsScript 삽질기' 카테고리의 다른 글

Puzzle game  (0) 2017.01.22
Clock  (0) 2016.10.25
Puzzle  (0) 2016.10.25
Posted by chobocho