Go에서 스타워즈.
나는 고릴라다.
며칠 전에 나는 트위터에서 이 트위터를 보았다.
나는 Vim에서 스타워즈를 보기로 결정했다.https://t.co/kTp3HqcLis pic.twitter.com/dM6c9WqVWA — mattn (@mattn_jp) 2019년 1월 23일
역시 mattn.
다만 유감스럽게도 이것은 Vim의 플러그인이기 때문에 Vim에서만 사용할 수 있습니다.
없는 것은 할 수밖에 없다.
그래서 이 Go판을 만들었어요.
Go는 교차 컴파일이 가능하기 때문에 어떤 환경에서도 2진법으로 이동할 수 있으며 언제든지 볼 수 있다.
만든 물건
저장소 여기 있습니다.
이 그림은 @po3rin 씨가 만든 이 도구를 사용했습니다.
아주 좋아요. 꼭 한번 써 보세요.
Qiita의 경우 URL을 직접 사용할 수 없으므로 이미지를 복사하여 URL 붙여넣기만 변경하십시오.<a href="https://github.com/skanehira/go-starwars"><img src="https://qiita-image-store.s3.amazonaws.com/0/66178/0ef750bc-03ed-1eb8-2b3b-cfdb9801f3b9.png" width="460px"></a>
사용 방법
읽으세요README.
하면, 만약, 만약...docker run --rm -it skanehira/go-starwars
에서 설명한 대로 해당 매개변수의 값을 수정합니다.
구조
텍스트 파일만 읽고 출력합니다.
라이브러리 사용
<a href="https://github.com/skanehira/go-starwars"><img src="https://qiita-image-store.s3.amazonaws.com/0/66178/0ef750bc-03ed-1eb8-2b3b-cfdb9801f3b9.png" width="460px"></a>
읽으세요README.
하면, 만약, 만약...
docker run --rm -it skanehira/go-starwars
에서 설명한 대로 해당 매개변수의 값을 수정합니다.구조
텍스트 파일만 읽고 출력합니다.
라이브러리 사용
packr
바이너리 파일에 텍스트를 포함할 수 있습니다.
자주 보도에서 보실 수 있습니다
go-bindata
우리 쪽은 이미 정비를 하지 않았기 때문에packr를 다시 사용하기로 결정했다.사용 방법은 README 를 참조하십시오. 그러나 바이너리 파일을 구축할 때
packr build
.간단하고 알기 쉽다.
go-colorable
화면 지우기에는 이스케이프 시퀀스가 사용되지만 Windows에서는 사용할 수 없습니다.
따라서 mattn 씨가 만든 라이브러리를 사용하면 윈도우즈도 화면을 지울 수 있습니다.
역시 mattn.
프로세스
sw1.txt
의 내용은 단순한 텍스트일 뿐 for분으로 읽고 출력할 뿐이다.45 및 30은 대기 시간으로, 그 외 13줄의 컨텐트는 프레임 1입니다.
45
Original Work: Simon Jansen ( http://www.asciimation.co.nz/ )
Inspiration : Martin W. Kirst
https://github.com/nitram509/ascii-telnet-server
Httpification: Martin Raison
https://twitter.com/braizh
The hard work was done by Simon,
I just wrote the http player
and placed it online using Simon's movie sources.
30
WWW.ASCIIMATION.CO.NZ
presents
한 줄 한 줄 읽고, 시간 줄은string을 int로 해석하고, 결합된 문자를 출력합니다.지정된 시간을 기다린 후 화면 지우기와 값 초기화를 진행합니다.
이외에 문자열만 결합하면 됩니다.
아주 간단해요.
scanner := bufio.NewScanner(file)
for scanner.Scan() {
if i%height == 0 {
// get duration from text line
duration, err = strconv.Atoi(scanner.Text())
if err != nil {
continue
}
// print buffered line
fmt.Println(buffer)
time.Sleep(time.Duration((*speed)*duration) * time.Millisecond)
// clear terminal screen, init buffer and duration
clear()
buffer = ""
duration = 0
} else {
// text line into buffer
buffer += fmt.Sprintln(scanner.Text())
}
i++
}
화면 지우기 처리 정보
func clear() {
// https://www.grapecity.com/developer/support/powernews/column/clang/047/page02.htm
fmt.Fprint(stdOut, "\x1b[2J")
fmt.Fprint(stdOut, "\x1b[0;0H")
stdOut.Flush()
}
이스케이프 시퀀스를 사용하여 화면을 지울 수 있습니다.\x1b[2J
화면을 지우지만 커서가 변하지 않기 때문에 커서 중 하나를 왼쪽 위로 돌려야 합니다.\x1b[0;0H
커서를 좌표 0, 0으로 다시 이동합니다.이것에 맞추면 화면을 지울 수 있다.
마지막
단락이지만 이런 걸 하니 즐겁죠.
엔지니어는 공부할 필요가 없다고 생각하는데, 중요한 것은 자신을 찾아 기뻐하며 껑충껑충 뛰면서 식견과 경험을 깊이 있게 하는 것이다
앞으로도 즐거울 거예요.
Reference
이 문제에 관하여(Go에서 스타워즈.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/gorilla0513/items/bc53f13c63b5291912d2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Go에서 스타워즈.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/gorilla0513/items/bc53f13c63b5291912d2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)