티스토리 뷰

반응형

 

오늘은 오프라인에서도 가능한 채팅 프로그램을 만들어 봅시다.

 

일단, 프로그램의 모습을 간단히 살펴봅시다.

프로그램의 모습입니다.

 

현재 모습은 가입하기에 들어온 모습입니다.

 

이름(아이디)를 입력하면

비밀번호를 입력 할 수 있는 곳이 나옵니다.

 

 

가입이 완료되었을 경우 이런 화면이 나옵니다.

 

아무키나 누르면 그냥 스킵합니다.

(급하신 분들은 아무 키나 누르세요!)

 

 

로그인 했을 경우 입니다.

 

기본적으로, 상단에는 이름이 있습니다.

채팅하기 기능과 채팅신청,로그아웃이 있습니다.

 

로그아웃 기능은 변수값을 0으로 만들게 설정해서 바로 로그인 할 수 없도록 변경하였습니다.

(왜 고퀄리티로 만든거지...)

로그인 창 입니다.

(순서가 조금 이상하군요)

 

이름을 입력하고

비밀번호를 입력하면

아까 보셨던 창이 나옵니다.(채팅하기 기능)

 

그런데 만약 비밀번호 또는 아이디(이름)을 틀렸을땐 어떻게 나올까요?

 

이런식으로 나옵니다 ㅎㅎ

 

 

일단 채팅 테스트를 위해 다른계정도 만들었습니다.

 

이제 채팅신청을 해보도록 하겠습니다.

 

채팅 신청에는 그냥 원하는 분의 이름을 입력해주시면 됩니다.

 

그러면

채팅하기를 입력했을떄

채팅신청했던 분의 이름이 나옵니다.

 

 

상대방에서는

자신의 이름이 나옵니다.

 

이제 원하는분의 이름을 입력해주시면 채팅이 가능합니다.

먼저, 안녕하세요를 입력해 보겠습니다.

자신의 화면에서는

이런식으로 나옵니다.

상대방 화면입니다.

본격적으로 채팅을 시작해보겠습니다.

아주 잘 됩니다.

 

다만 , 단점은 띄어쓰기가 있을 경우에는 프로그램이 바로 종료됩니다.

(ㅠㅠ)

 

채팅은 12341를 입력해서 초기화가 가능합니다..

back1을 입력하면 다시 메인 화면으로 나옵니다.

 

 

자세한 내용은 영상을 참고하시는걸 추천드립니다.

영상 링크:https://www.youtube.com/watch?v=adQM8ZwvNOo&feature=youtu.be

 

그럼 바로 소스 설명을 들어가 보도록 하겠습니다!
@echo off
title 배치파일 채팅1.0V
color F
:main
if not exist C:\hanchochat goto make
goto main2

:make
cd/
md C:\hanchochat

goto main
:main2
cd/
cd C:\hanchochat
cls
echo -----------------
echo 1.로그인하기
echo 2.가입하기
echo -----------------
echo.
set /p type=번호:
if %type%==1 goto login
if %type%==2 goto register

:register
cls
echo 뒤로가기:1
echo ---------------
echo 가입하기
echo ---------------
echo 이름을 입력해 주세요.
echo 영어만 입력해 주세요.
echo 한국어,숫자,특수문자일경우 채팅 불가능
echo.
set /p rname=이름:
if %rname%==1 goto main2
md %rname%
cls
echo 뒤로가기:1
echo ---------------
echo 가입하기
echo ---------------
echo 비밀번호를 입력하여 주세요.
echo.
set /p rpassword=PW:
if %rpassword%==1 goto main2
cd %rname%
md %rpassword%
echo .>>list.txt
cls
echo 가입 성공
timeout /t 3
goto main2

:login
cls
echo 뒤로가기:1
echo -------------
echo 로그인
echo -------------
set /p name=이름:
if %name%==1 goto main2
if not exist %name% goto erro
cd %name%
cls
echo 뒤로가기:1
echo -------------
echo 로그인
echo -------------
set /p password=비밀번호:
if %password%==1 goto main2
if not exist %password% goto erro
cd %password%
goto hello
:erro
echo 패스워드 또는 이름이
echo 일치하지 않습니다.
timeout /t 5
goto main2


:hello
cls
echo 환영합니다%name%님
echo -------------
echo 채팅하기:1
echo 채팅 신청:2
echo 로그아웃:3
echo -------------
set /p num=번호:
if %num%==1 goto chatlist
if %num%==2 goto chatc
if %num%==3 goto logout


:logout
cls
echo 로그아웃중
set name=0
set password=0
goto main2

:chatc
cls
echo 신청할분의 이름을 입력해주세요.
echo 뒤로가기:1
set /p ccname=이름:
if %ccname%==1 goto hello
if not exist C:\hanchochat\%ccname% goto errro
echo %ccname%>>C:\hanchochat\%name%\list.txt
echo %name%>>C:\hanchochat\%ccname%\list.txt
echo 완료
timeout /5 3
goto hello
:errro
echo 존재하지x 유저입니다.
timeout /t 5
goto chatc

:chatlist
findstr /b q C:\hanchochat\%name%\list.txt
findstr /b w C:\hanchochat\%name%\list.txt
findstr /b e C:\hanchochat\%name%\list.txt
findstr /b r C:\hanchochat\%name%\list.txt
findstr /b t C:\hanchochat\%name%\list.txt
findstr /b y C:\hanchochat\%name%\list.txt
findstr /b u C:\hanchochat\%name%\list.txt
findstr /b i C:\hanchochat\%name%\list.txt
findstr /b o C:\hanchochat\%name%\list.txt
findstr /b p C:\hanchochat\%name%\list.txt
findstr /b a C:\hanchochat\%name%\list.txt
findstr /b s C:\hanchochat\%name%\list.txt
findstr /b d C:\hanchochat\%name%\list.txt
findstr /b f C:\hanchochat\%name%\list.txt
findstr /b g C:\hanchochat\%name%\list.txt
findstr /b h C:\hanchochat\%name%\list.txt
findstr /b j C:\hanchochat\%name%\list.txt
findstr /b k C:\hanchochat\%name%\list.txt
findstr /b l C:\hanchochat\%name%\list.txt
findstr /b z C:\hanchochat\%name%\list.txt
findstr /b x C:\hanchochat\%name%\list.txt
findstr /b c C:\hanchochat\%name%\list.txt
findstr /b v C:\hanchochat\%name%\list.txt
findstr /b b C:\hanchochat\%name%\list.txt
findstr /b n C:\hanchochat\%name%\list.txt
findstr /b m C:\hanchochat\%name%\list.txt
echo.
echo 뒤로가기:1
echo 채팅하고 싶은분의 이름을 입력하여주세요.
echo.
set /p choice=이름:
if %choice%==1 goto hello
goto chatgo

:chatgo
cls
if not exist C:\hanchochat\%name%\%choice%.txt goto chatgo2
findstr /b [ C:\hanchochat\%name%\%choice%.txt
echo.
echo.
echo 뒤로가기:back1 채팅클리어:12341
set /p abou=답장:
if %abou%==back1 goto chatlist
if %abou%==12341 echo .>C:\hanchochat\%name%\%choice%.txt
set abou = %abou: 씨=%
echo [나]-%abou%>>C:\hanchochat\%name%\%choice%.txt
echo [%name%]-%abou%>>C:\hanchochat\%choice%\%name%.txt
goto chatgo

:chatgo2
echo .>>C:\hanchochat\%name%\%choice%.txt
echo .>>C:\hanchochat\%choice%\%name%.txt
goot chatgo

 

이게 소스 입니다.

 

이번 글의 소스가 조금 길어요 ㅎㅎ

(아...... 이걸 다 설명해야 한다니....)

 

빨=소스

파=설명

 

@echo off

 

명령어를 숨깁니다.


title 배치파일 채팅1.0V

프로그램의 제목을 "배치파일 채팅 1.0v"라고 지정합니다.

 

 


color F

텍스트의 색깔을 F(밝은 색)으로 변경합니다.


:main

 main 레이블 생성!

 


if not exist C:\hanchochat goto make

경로 C:\hanchochat이 존재하지 않을경우 make 레이블로 이동
goto main2

main2레이블로 이동

:make

make레이블 생성
cd/

경로를 C:\로 변경
md C:\hanchochat

hanchochat 폴더생성

goto main

main 레이블로 이동
:main2

main2레이블
cd/

최상단 경로로 이동(C:\)
cd C:\hanchochat

hanchochat폴더로 이동
cls

콘솔내용 모두 지우기
echo -----------------

------------------출력
echo 1.로그인하기

"1.로그인하기" 출력
echo 2.가입하기

"2.가입하기"출력


echo -----------------

"------------------"출력
echo.

빈 텍스트 출력
set /p type=번호:

type라는 변수 생성
if %type%==1 goto login

만약 type가 1이라면 login레이블로 이동
if %type%==2 goto register

만약 type가 2라면 register 레이블로 이동

:register

register레이블
cls

콘솔 내용 초기화
echo 뒤로가기:1

"뒤로가기:1"출력
echo ---------------

"-------------"출력
echo 가입하기

"가입하기"출력
echo ---------------

"----------------"출력
echo 이름을 입력해 주세요.

"이름을 입력해 주세요" 출력
echo 영어만 입력해 주세요.

"영어만 입력해 주세요" 출력
echo 한국어,숫자,특수문자일경우 채팅 불가능

"한국어,숫자,특수문자일경우 채팅 불가능" 출력
echo.

빈 텍스트(빈칸)출력
set /p rname=이름:

rname이라는 변수를 설정
if %rname%==1 goto main2

만약 rname이라는 변수가 1이라면 main2레이블로 이동!
md %rname%

rname이라는 변수값 폴더 생성

(만약 rname이 abc라면, 폴더의 이름은 abc가 됩니다)
cls

콘솔 내용 초기화
echo 뒤로가기:1

"뒤로가기:1" 출력
echo ---------------

"--------------"출력
echo 가입하기

"가입하기"출력
echo ---------------

"-------------------"출력
echo 비밀번호를 입력하여 주세요.

"비밀번호를 입력하여 주세요."출력
echo.

빈 텍스트(빈칸) 출력


set /p rpassword=PW:

rpassword라는 변수를 설정
if %rpassword%==1 goto main2

rpassword라는 변수가 1이라면 main2레이블로 이동
cd %rname%

rname변수값 폴더로 이동
md %rpassword%

rpassword변수의 폴더 생성
echo .>>list.txt

list.txt 라는 파일을 만들고 그 파일에 . 작성
cls

콘솔 내용 초기화
echo 가입 성공

"가입 성공"출력
timeout /t 3

3초후 진행
goto main2

main2레이블로 이동

:login

login레이블
cls

콘솔 내용 초기화
echo 뒤로가기:1

"뒤로가기:1" 출력
echo -------------

"------------------"출력
echo 로그인

"로그인" 출력
echo ------------

"------------"출력
set /p name=이름:

name이라는 변수를 생성하고

사용자가 입력하는것을

name변수에 선언
if %name%==1 goto main2

name변수가 1이라면 main2레이블로 이동!
if not exist %name% goto erro

name변수 폴더가 없을경우

erro레이블로 이동

(이름을 틀렸을 경우 작동)


cd %name%

name변수에 선언한 내용의 폴더로 이동


cls

cls는 콘솔의 내용을 초기화 시켜줍니다.

깔끔하게 변경!
echo 뒤로가기:1

"뒤로가기:1"이라는 메세지 출력

(echo는 메세지를 출력할때 사용합니다)
echo -------------
echo 로그인
echo -------------

메세지 출력!
set /p password=비밀번호:

password라는 변수에 유저가 입력하는 내용 선언!
if %password%==1 goto main2

만약 변수password가 1일경우 main2레이블로 이동!
if not exist %password% goto erro

변수password에 선언한 내용의 폴더에 들어갈 수 없을경우 erro레이블로 이동

(쉽게 말하면 방금 입력한 폴더가 없으면 :erro라고 있는줄로 건너 뛰기)
cd %password%

폴더 이동(password의 내용으로)
goto hello

hello 레이블로 이동
:erro

erro레이블
echo 패스워드 또는 이름이


echo 일치하지 않습니다.

메세지 출력!


timeout /t 5

5초가 지나면 다음 내용 실행

(카운트 다운.....(??))
goto main2

main2레이블로 이동

(다시 로그인할 수 있도록!)


:hello

hello레이블 생성
cls

콘솔 내용 초기화
echo 환영합니다%name%님
echo -------------
echo 채팅하기:1
echo 채팅 신청:2
echo 로그아웃:3
echo -------------

메세지 출력!
set /p num=번호:

num변수에 입력하는것 선언!

(점점 설명이 대충대충....)
if %num%==1 goto chatlist
if %num%==2 goto chatc
if %num%==3 goto logout

num변수가 1일경우에는 chatlist레이블로 이동하고

2일 경우에는 chatc레이블로 이동

3일 경우에는 logout레이블로 이동
:logout

logout레이블!
cls

콘솔 내용 초기화!
echo 로그아웃중

"로그아웃중" 메세지 출력
set name=0
set password=0

변수 name,password를 0으로 변경
goto main2

main2레이블로 이동

( 초기 화면으로!)

:chatc

chatc레이블
cls

콘솔 내용 초기화
echo 신청할분의 이름을 입력해주세요.


echo 뒤로가기:1

메세지 출력
set /p ccname=이름:

ccname변수에 입력하는 내용 선언
if %ccname%==1 goto hello

ccname이 1일경우에는 hello레이블로 이동
if not exist C:\hanchochat\%ccname% goto errro

지정한 경로가 없을 경우에는 errro레이블 로 이동
echo %ccname%>>C:\hanchochat\%name%\list.txt
echo %name%>>C:\hanchochat\%ccname%\list.txt

list.txt에 메세지(변수 ccname,name 내용)작성
echo 완료

메세지 출력


goto hello

hello레이블로 이동
:errro

errro레이블
echo 존재하지x 유저입니다.

메세지 출력
timeout /t 5

5초후 다음 소스 실행
goto chatc

chatc레이블로 이동

:chatlist

chatlist레이블
findstr /b q C:\hanchochat\%name%\list.txt
findstr /b w C:\hanchochat\%name%\list.txt
findstr /b e C:\hanchochat\%name%\list.txt
findstr /b r C:\hanchochat\%name%\list.txt
findstr /b t C:\hanchochat\%name%\list.txt
findstr /b y C:\hanchochat\%name%\list.txt
findstr /b u C:\hanchochat\%name%\list.txt
findstr /b i C:\hanchochat\%name%\list.txt
findstr /b o C:\hanchochat\%name%\list.txt
findstr /b p C:\hanchochat\%name%\list.txt
findstr /b a C:\hanchochat\%name%\list.txt
findstr /b s C:\hanchochat\%name%\list.txt
findstr /b d C:\hanchochat\%name%\list.txt
findstr /b f C:\hanchochat\%name%\list.txt
findstr /b g C:\hanchochat\%name%\list.txt
findstr /b h C:\hanchochat\%name%\list.txt
findstr /b j C:\hanchochat\%name%\list.txt
findstr /b k C:\hanchochat\%name%\list.txt
findstr /b l C:\hanchochat\%name%\list.txt
findstr /b z C:\hanchochat\%name%\list.txt
findstr /b x C:\hanchochat\%name%\list.txt
findstr /b c C:\hanchochat\%name%\list.txt
findstr /b v C:\hanchochat\%name%\list.txt
findstr /b b C:\hanchochat\%name%\list.txt
findstr /b n C:\hanchochat\%name%\list.txt
findstr /b m C:\hanchochat\%name%\list.txt

list.txt에서 a,b,c,d ---등등 단어를 찾고

찾은 내용을 출력
echo.

빈칸 출력(공백)
echo 뒤로가기:1
echo 채팅하고 싶은분의 이름을 입력하여주세요.
echo.

메세지 출력
set /p choice=이름:

choice변수 선언
if %choice%==1 goto hello

변수choice가 1일 경우에는 hello레이블로 이동(뒤로가기)
goto chatgo

chatgo레이블로 이동

:chatgo

chatgo 레이블
cls

콘솔 내용 초기화
if not exist C:\hanchochat\%name%\%choice%.txt goto chatgo2

경로 진입이 불가능하면 chatgo2레이블로 이동
findstr /b [ C:\hanchochat\%name%\%choice%.txt

[를 %choice%.txt에서 찾고,

결과를 출력
echo.
echo.

공백 출력
echo 뒤로가기:back1 채팅클리어:12341

메세지 출력
set /p abou=답장:

abou변수 선언
if %abou%==back1 goto chatlist


if %abou%==12341 echo .>C:\hanchochat\%name%\%choice%.txt

만약 abou라는 변수가 back1일 경우에는 chatlist 레이블로 이동하고,

12341일경우에는 %choicd%.txt의 내용을 모두 삭제하고

. 작성
set abou = %abou: 씨=%

이건 무시하셔도 됩니다 (ㅎ)
echo [나]-%abou%>>C:\hanchochat\%name%\%choice%.txt
echo [%name%]-%abou%>>C:\hanchochat\%choice%\%name%.txt

이제 알 수 있겠죠?

echo 원하는 말 >>경로

이 소스는 메모장으로 열 수 있는 모~든 파일의 마지막줄에 원하는 말을 작성시킬 수 있어요!
goto chatgo

chatgo레이블로 이동

:chatgo2

chatgo2레이블!
echo .>>C:\hanchochat\%name%\%choice%.txt
echo .>>C:\hanchochat\%choice%\%name%.txt

 

 


goot chatgo

 

 

질문은 댓글에 부탁드립니다!

영상 링크:https://www.youtube.com/watch?v=adQM8ZwvNOo&feature=youtu.be

반응형
댓글
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday