├── P9j8.py
├── h9BY.py
├── Vh2i.py
├── Ch9H.py
├── An2k.py
├── 002_fc.pdf
├── 001_Root.pdf
├── invader
├── hit.wav
├── lose.wav
├── win.wav
├── shoot.wav
├── player_hit.wav
├── gene-sound.py
└── hajimete.py
├── 000_テックジム 入校案内.pdf
├── 002_fc_susume.pdf
├── 00_python_open.pdf
├── 00_テックジム導入テキスト.pdf
├── Techgym20240412.pdf
├── million_respos.png
├── 000_techgym_info.pdf
├── 00_python_manual.pdf
├── Vu2x.py
├── x8UH.py
├── xS7K.py
├── 000_tokyo_chirashi.pdf
├── 000_tokyo_chirashi2.pdf
├── 01_Introduction_en.pdf
├── 01_python_traial_en.pdf
├── D3mW.py
├── rR76.py
├── techgym_group_lesson.pdf
├── 000_techgym_for_media.pdf
├── chirashi
├── techgym-omo_ol.pdf
└── techgym-ura_ol.pdf
├── 01_Pythonオープン講座(6題バージョン).pdf
├── Lb65.py
├── x2Ns.py
├── U2gr.py
├── Jw2U.py
├── a5Qm.py
├── y5YT.py
├── gP6s.py
├── v7Pi.py
├── hit_ball_2.py
├── .gitignore
├── hit_ball.py
├── chat_bot.yml
└── kessan.html
/P9j8.py:
--------------------------------------------------------------------------------
1 | def calc():
2 |
3 | calc()
4 |
--------------------------------------------------------------------------------
/h9BY.py:
--------------------------------------------------------------------------------
1 | number = 2
2 |
3 | print('2です')
4 |
--------------------------------------------------------------------------------
/Vh2i.py:
--------------------------------------------------------------------------------
1 | def calc():
2 | print('calcの中身')
3 |
4 | calc()
5 |
--------------------------------------------------------------------------------
/Ch9H.py:
--------------------------------------------------------------------------------
1 | number = 2
2 |
3 | if number == 2:
4 | print('2です')
5 |
--------------------------------------------------------------------------------
/An2k.py:
--------------------------------------------------------------------------------
1 | def calc(a):
2 | print('a = ' + str(a))
3 |
4 | calc(3)
5 |
--------------------------------------------------------------------------------
/002_fc.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/techgymjp/techgym_python_open/HEAD/002_fc.pdf
--------------------------------------------------------------------------------
/001_Root.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/techgymjp/techgym_python_open/HEAD/001_Root.pdf
--------------------------------------------------------------------------------
/invader/hit.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/techgymjp/techgym_python_open/HEAD/invader/hit.wav
--------------------------------------------------------------------------------
/invader/lose.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/techgymjp/techgym_python_open/HEAD/invader/lose.wav
--------------------------------------------------------------------------------
/invader/win.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/techgymjp/techgym_python_open/HEAD/invader/win.wav
--------------------------------------------------------------------------------
/000_テックジム 入校案内.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/techgymjp/techgym_python_open/HEAD/000_テックジム 入校案内.pdf
--------------------------------------------------------------------------------
/002_fc_susume.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/techgymjp/techgym_python_open/HEAD/002_fc_susume.pdf
--------------------------------------------------------------------------------
/00_python_open.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/techgymjp/techgym_python_open/HEAD/00_python_open.pdf
--------------------------------------------------------------------------------
/00_テックジム導入テキスト.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/techgymjp/techgym_python_open/HEAD/00_テックジム導入テキスト.pdf
--------------------------------------------------------------------------------
/Techgym20240412.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/techgymjp/techgym_python_open/HEAD/Techgym20240412.pdf
--------------------------------------------------------------------------------
/invader/shoot.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/techgymjp/techgym_python_open/HEAD/invader/shoot.wav
--------------------------------------------------------------------------------
/million_respos.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/techgymjp/techgym_python_open/HEAD/million_respos.png
--------------------------------------------------------------------------------
/000_techgym_info.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/techgymjp/techgym_python_open/HEAD/000_techgym_info.pdf
--------------------------------------------------------------------------------
/00_python_manual.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/techgymjp/techgym_python_open/HEAD/00_python_manual.pdf
--------------------------------------------------------------------------------
/Vu2x.py:
--------------------------------------------------------------------------------
1 | number = 1
2 |
3 | if number == 1:
4 | print('1です')
5 | elif number == 2:
6 | print('2です')
7 |
--------------------------------------------------------------------------------
/x8UH.py:
--------------------------------------------------------------------------------
1 | def calc(a, b):
2 | result = a * b
3 | print(str(a) + ' x ' + str(b))
4 |
5 | calc(3, 4)
6 |
--------------------------------------------------------------------------------
/xS7K.py:
--------------------------------------------------------------------------------
1 | def calc(a, b):
2 | print('a = ' + str(a))
3 | print('b = ' + str(b))
4 |
5 | calc(3, 4)
6 |
--------------------------------------------------------------------------------
/000_tokyo_chirashi.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/techgymjp/techgym_python_open/HEAD/000_tokyo_chirashi.pdf
--------------------------------------------------------------------------------
/000_tokyo_chirashi2.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/techgymjp/techgym_python_open/HEAD/000_tokyo_chirashi2.pdf
--------------------------------------------------------------------------------
/01_Introduction_en.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/techgymjp/techgym_python_open/HEAD/01_Introduction_en.pdf
--------------------------------------------------------------------------------
/01_python_traial_en.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/techgymjp/techgym_python_open/HEAD/01_python_traial_en.pdf
--------------------------------------------------------------------------------
/D3mW.py:
--------------------------------------------------------------------------------
1 | number = 1
2 |
3 | if number == 1:
4 | print('1です')
5 |
6 | if number == 2:
7 | print('2です')
8 |
--------------------------------------------------------------------------------
/invader/player_hit.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/techgymjp/techgym_python_open/HEAD/invader/player_hit.wav
--------------------------------------------------------------------------------
/rR76.py:
--------------------------------------------------------------------------------
1 | number = 2
2 |
3 | if number == 1:
4 | print('1です')
5 |
6 | if number == 2:
7 | print('2です')
8 |
--------------------------------------------------------------------------------
/techgym_group_lesson.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/techgymjp/techgym_python_open/HEAD/techgym_group_lesson.pdf
--------------------------------------------------------------------------------
/000_techgym_for_media.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/techgymjp/techgym_python_open/HEAD/000_techgym_for_media.pdf
--------------------------------------------------------------------------------
/chirashi/techgym-omo_ol.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/techgymjp/techgym_python_open/HEAD/chirashi/techgym-omo_ol.pdf
--------------------------------------------------------------------------------
/chirashi/techgym-ura_ol.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/techgymjp/techgym_python_open/HEAD/chirashi/techgym-ura_ol.pdf
--------------------------------------------------------------------------------
/01_Pythonオープン講座(6題バージョン).pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/techgymjp/techgym_python_open/HEAD/01_Pythonオープン講座(6題バージョン).pdf
--------------------------------------------------------------------------------
/Lb65.py:
--------------------------------------------------------------------------------
1 | def calc(a, b):
2 | result = a * b
3 | print(str(a) + ' x ' + str(b))
4 | return result
5 |
6 | calc_result = calc(3, 4)
7 |
--------------------------------------------------------------------------------
/x2Ns.py:
--------------------------------------------------------------------------------
1 | number = 3
2 |
3 | if number == 1:
4 | print('1です')
5 | elif number == 2:
6 | print('2です')
7 | else:
8 | print('条件に当てはまりません')
--------------------------------------------------------------------------------
/U2gr.py:
--------------------------------------------------------------------------------
1 | number = 3
2 |
3 | if number == 1:
4 | print('1です')
5 | elif number == 2 or number == 3:
6 | print('2か3です')
7 | else:
8 | print('条件に当てはまりません')
--------------------------------------------------------------------------------
/Jw2U.py:
--------------------------------------------------------------------------------
1 | def calc(a, b):
2 | result = a * b
3 | print(str(a) + ' x ' + str(b))
4 | return result
5 |
6 | calc_result = calc(3, 4)
7 | print(str(calc_result))
8 |
--------------------------------------------------------------------------------
/a5Qm.py:
--------------------------------------------------------------------------------
1 | import random
2 |
3 | print('じゃんけんスタート')
4 |
5 | print('あなたの手を入力してください')
6 | my_hand = int(input('0:グー, 1:チョキ, 2:パー'))
7 | you_hand = random.randint(0, 2)
8 |
9 | hand_diff = my_hand - you_hand
10 |
11 | if hand_diff == 0:
12 | print('あいこ')
13 | elif hand_diff == -1 or hand_diff == 2:
14 | print('勝ち')
15 | else:
16 | print('負け')
17 |
--------------------------------------------------------------------------------
/y5YT.py:
--------------------------------------------------------------------------------
1 | import random
2 |
3 | print('じゃんけんスタート')
4 |
5 | print('あなたの手を入力してください')
6 | my_hand = int(input('0:グー, 1:チョキ, 2:パー'))
7 | you_hand = random.randint(0, 2)
8 |
9 | if my_hand == 0:
10 | if you_hand == 0:
11 | print('あいこ')
12 | elif you_hand == 1:
13 | print('勝ち')
14 | elif my_hand == 1:
15 | if you_hand == 0:
16 | print('負け')
17 | elif you_hand == 1:
18 | print('あいこ')
19 |
--------------------------------------------------------------------------------
/gP6s.py:
--------------------------------------------------------------------------------
1 | import random
2 |
3 | def start_message():
4 | print('じゃんけんスタート')
5 |
6 | def get_my_hand():
7 | print('あなたの手を入力してください')
8 | return int(input('0:グー, 1:チョキ, 2:パー'))
9 |
10 | def get_you_hand():
11 | return random.randint(0, 2)
12 |
13 | def view_result(hand_diff):
14 | if hand_diff == 0:
15 | print('あいこ')
16 | elif hand_diff == -1 or hand_diff == 2:
17 | print('勝ち')
18 | else:
19 | print('負け')
20 |
21 | start_message()
22 |
23 | my_hand = get_my_hand()
24 | you_hand = get_you_hand()
25 | hand_diff = my_hand - you_hand
26 |
27 | view_result(hand_diff)
28 |
--------------------------------------------------------------------------------
/v7Pi.py:
--------------------------------------------------------------------------------
1 | import random
2 |
3 | print('じゃんけんスタート')
4 |
5 | print('あなたの手を入力してください')
6 | my_hand = int(input('0:グー, 1:チョキ, 2:パー'))
7 | you_hand = random.randint(0, 2)
8 |
9 | if my_hand == 0:
10 | if you_hand == 0:
11 | print('あいこ')
12 | elif you_hand == 1:
13 | print('勝ち')
14 | elif you_hand == 2:
15 | print('負け')
16 | elif my_hand == 1:
17 | if you_hand == 0:
18 | print('負け')
19 | elif you_hand == 1:
20 | print('あいこ')
21 | elif you_hand == 2:
22 | print('勝ち')
23 | elif my_hand == 2:
24 | if you_hand == 0:
25 | print('勝ち')
26 | elif you_hand == 1:
27 | print('負け')
28 | elif you_hand == 2:
29 | print('あいこ')
30 |
--------------------------------------------------------------------------------
/invader/gene-sound.py:
--------------------------------------------------------------------------------
1 | import numpy as np
2 | import wave
3 | import struct
4 |
5 | def generate_tone(filename, freq=440, duration_ms=200, volume=0.5, sample_rate=44100):
6 | n_samples = int(sample_rate * duration_ms / 1000)
7 | t = np.linspace(0, duration_ms / 1000, n_samples, False)
8 | tone = np.sin(freq * 2 * np.pi * t) * volume
9 |
10 | # 16bit PCMデータに変換
11 | audio = (tone * 32767).astype(np.int16)
12 |
13 | with wave.open(filename, "w") as f:
14 | f.setparams((1, 2, sample_rate, n_samples, "NONE", "not compressed"))
15 | for sample in audio:
16 | f.writeframes(struct.pack('h', sample))
17 |
18 | # 例:各効果音の生成
19 | generate_tone("shoot.wav", freq=800, duration_ms=100, volume=0.4)
20 | generate_tone("hit.wav", freq=600, duration_ms=150, volume=0.5)
21 | generate_tone("player_hit.wav", freq=300, duration_ms=300, volume=0.5)
22 | generate_tone("win.wav", freq=1000, duration_ms=500, volume=0.6)
23 | generate_tone("lose.wav", freq=200, duration_ms=500, volume=0.6)
24 |
25 | print("効果音ファイルを生成しました。")
26 |
--------------------------------------------------------------------------------
/hit_ball_2.py:
--------------------------------------------------------------------------------
1 | import random
2 |
3 | def play(try_count):
4 | hit_count = 0
5 | ball_count = 0
6 | my_answers = []
7 |
8 | input_string = ""
9 | while True:
10 | tmp_string = input('【' + str(try_count) + '回目】違う数字4つの組み合わせを答えてください')
11 | if len(tmp_string) == 4 and tmp_string.isdigit():
12 | input_string = tmp_string
13 | break
14 | #回答のリスト生成
15 | for i in range(0, 4):
16 | my_answers.append(int(input_string[i]))
17 | #ヒット探し
18 | for i in range(0, 4):
19 | if my_answers[i] == answers[i]:
20 | hit_count += 1
21 | #ボール探し
22 | for i in range(0, 4):
23 | if my_answers[i] in answers:
24 | ball_count += 1 #hit数が重複している
25 | ball_count -= hit_count
26 | #判定結果表示
27 | if hit_count == 4:
28 | print('おめでとう')
29 | print('正解は')
30 | print(answers)
31 | print(str(try_count) + '回目での成功。お疲れ様でした')
32 | return False
33 | else:
34 | print(str(hit_count) + 'ヒット' + str(ball_count) + 'ボールです')
35 | return True
36 |
37 | #正解リスト設定
38 | numbers = list(range(0, 10))
39 | answers = random.sample(numbers, 4)
40 |
41 | try_count = 1
42 | while True:
43 | if play(try_count):
44 | try_count += 1
45 | else:
46 | break
47 |
48 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Byte-compiled / optimized / DLL files
2 | __pycache__/
3 | *.py[cod]
4 | *$py.class
5 |
6 | # C extensions
7 | *.so
8 |
9 | # Distribution / packaging
10 | .Python
11 | build/
12 | develop-eggs/
13 | dist/
14 | downloads/
15 | eggs/
16 | .eggs/
17 | lib/
18 | lib64/
19 | parts/
20 | sdist/
21 | var/
22 | wheels/
23 | *.egg-info/
24 | .installed.cfg
25 | *.egg
26 | MANIFEST
27 |
28 | # PyInstaller
29 | # Usually these files are written by a python script from a template
30 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
31 | *.manifest
32 | *.spec
33 |
34 | # Installer logs
35 | pip-log.txt
36 | pip-delete-this-directory.txt
37 |
38 | # Unit test / coverage reports
39 | htmlcov/
40 | .tox/
41 | .coverage
42 | .coverage.*
43 | .cache
44 | nosetests.xml
45 | coverage.xml
46 | *.cover
47 | .hypothesis/
48 | .pytest_cache/
49 |
50 | # Translations
51 | *.mo
52 | *.pot
53 |
54 | # Django stuff:
55 | *.log
56 | local_settings.py
57 | db.sqlite3
58 |
59 | # Flask stuff:
60 | instance/
61 | .webassets-cache
62 |
63 | # Scrapy stuff:
64 | .scrapy
65 |
66 | # Sphinx documentation
67 | docs/_build/
68 |
69 | # PyBuilder
70 | target/
71 |
72 | # Jupyter Notebook
73 | .ipynb_checkpoints
74 |
75 | # pyenv
76 | .python-version
77 |
78 | # celery beat schedule file
79 | celerybeat-schedule
80 |
81 | # SageMath parsed files
82 | *.sage.py
83 |
84 | # Environments
85 | .env
86 | .venv
87 | env/
88 | venv/
89 | ENV/
90 | env.bak/
91 | venv.bak/
92 |
93 | # Spyder project settings
94 | .spyderproject
95 | .spyproject
96 |
97 | # Rope project settings
98 | .ropeproject
99 |
100 | # mkdocs documentation
101 | /site
102 |
103 | # mypy
104 | .mypy_cache/
105 |
--------------------------------------------------------------------------------
/hit_ball.py:
--------------------------------------------------------------------------------
1 | import random
2 |
3 | try_count = 1
4 |
5 | #ランダムの違う4つの数字の配列を作る
6 | def rand_ints_nodup(a, b, k):
7 | ns = []
8 | while len(ns) < k:
9 | n = random.randint(a, b)
10 | if not n in ns:
11 | ns.append(n)
12 | return ns
13 |
14 | def play():
15 | global try_count
16 | hit_count = 0
17 | ball_count = 0
18 | my_answer = input('【' + str(try_count) + '回目】違う数字4つの組み合わせを答えてください')
19 | my_1000s_number = my_answer[-4]
20 | my_100s_number = my_answer[-3]
21 | my_10s_number = my_answer[-2]
22 | my_1s_number = my_answer[-1]
23 | #ヒット探し
24 | if my_1000s_number == con_1000s_number:
25 | hit_count += 1
26 | if my_100s_number == con_100s_number:
27 | hit_count += 1
28 | if my_10s_number == con_10s_number:
29 | hit_count += 1
30 | if my_1s_number == con_1s_number:
31 | hit_count += 1
32 | #ボール探し
33 | if my_1000s_number == con_1s_number or my_1000s_number == con_10s_number or my_1000s_number == con_100s_number:
34 | ball_count += 1
35 | if my_100s_number == con_1s_number or my_100s_number == con_10s_number or my_100s_number == con_1000s_number:
36 | ball_count += 1
37 | if my_10s_number == con_1s_number or my_10s_number == con_100s_number or my_10s_number == con_1000s_number:
38 | ball_count += 1
39 | if my_1s_number == con_10s_number or my_1s_number == con_100s_number or my_1s_number == con_1000s_number:
40 | ball_count += 1
41 | #判定結果表示
42 | if hit_count == 4:
43 | print('おめでとう')
44 | print('正解は' + my_answer + 'です')
45 | print(str(try_count) + '回目での成功。お疲れ様でした')
46 | else:
47 | print(str(hit_count) + 'ヒット' + str(ball_count) + 'ボールです')
48 | try_count += 1
49 | play()
50 |
51 | #正解設定
52 | answer = rand_ints_nodup(0, 9, 4)
53 | con_1s_number = str(answer[3])
54 | con_10s_number = str(answer[2])
55 | con_100s_number = str(answer[1])
56 | con_1000s_number = str(answer[0])
57 |
58 | play()
--------------------------------------------------------------------------------
/invader/hajimete.py:
--------------------------------------------------------------------------------
1 | import pygame
2 | import random
3 | import sys
4 |
5 | # ゲームの初期化
6 | pygame.init()
7 |
8 | # 効果音の初期化
9 | pygame.mixer.init()
10 | try:
11 | shoot_sound = pygame.mixer.Sound("shoot.wav")
12 | invader_hit_sound = pygame.mixer.Sound("hit.wav")
13 | player_hit_sound = pygame.mixer.Sound("player_hit.wav")
14 | win_sound = pygame.mixer.Sound("win.wav")
15 | lose_sound = pygame.mixer.Sound("lose.wav")
16 | except Exception:
17 | class DummySound:
18 | def play(self): pass
19 | shoot_sound = invader_hit_sound = player_hit_sound = win_sound = lose_sound = DummySound()
20 |
21 | # 画面サイズ
22 | WIDTH, HEIGHT = 600, 800
23 | screen = pygame.display.set_mode((WIDTH, HEIGHT))
24 | pygame.display.set_caption("インベーダーゲーム")
25 |
26 | # 色
27 | WHITE = (255, 255, 255)
28 | BLACK = (0, 0, 0)
29 | GREEN = (0, 255, 0)
30 | RED = (255, 0, 0)
31 |
32 | # プレイヤー設定
33 | player_width, player_height = 60, 20
34 | player_x = WIDTH // 2 - player_width // 2
35 | player_y = HEIGHT - 60
36 | player_speed = 7
37 |
38 | # 弾設定
39 | bullet_width, bullet_height = 5, 15
40 | bullet_speed = 10
41 | bullets = []
42 |
43 | # インベーダー設定
44 | invader_rows = 5
45 | invader_cols = 8
46 | invader_width, invader_height = 50, 30
47 | invader_padding = 20
48 | invader_offset_x = 50
49 | invader_offset_y = 60
50 | invader_speed = 2
51 | invader_direction = 1 # 1:右, -1:左
52 |
53 | invaders = []
54 | for row in range(invader_rows):
55 | for col in range(invader_cols):
56 | x = invader_offset_x + col * (invader_width + invader_padding)
57 | y = invader_offset_y + row * (invader_height + invader_padding)
58 | invaders.append(pygame.Rect(x, y, invader_width, invader_height))
59 |
60 | # 敵の弾
61 | enemy_bullets = []
62 | enemy_bullet_speed = 5
63 |
64 | # フォント
65 | font = pygame.font.SysFont(None, 48)
66 |
67 | # ゲームオーバー
68 | game_over = False
69 | win = False
70 |
71 | clock = pygame.time.Clock()
72 |
73 | def draw():
74 | screen.fill(BLACK)
75 | # プレイヤー
76 | pygame.draw.rect(screen, GREEN, (player_x, player_y, player_width, player_height))
77 | # 弾
78 | for b in bullets:
79 | pygame.draw.rect(screen, WHITE, b)
80 | # インベーダー
81 | for inv in invaders:
82 | pygame.draw.rect(screen, RED, inv)
83 | # 敵の弾
84 | for eb in enemy_bullets:
85 | pygame.draw.rect(screen, (0, 200, 255), eb)
86 | if game_over:
87 | msg = font.render("GAME OVER", True, WHITE)
88 | screen.blit(msg, (WIDTH//2 - msg.get_width()//2, HEIGHT//2 - msg.get_height()//2))
89 | if win:
90 | msg = font.render("YOU WIN!", True, WHITE)
91 | screen.blit(msg, (WIDTH//2 - msg.get_width()//2, HEIGHT//2 - msg.get_height()//2))
92 | pygame.display.flip()
93 |
94 | sound_played = False
95 | player_hit_played = False
96 |
97 | while True:
98 | clock.tick(60)
99 | for event in pygame.event.get():
100 | if event.type == pygame.QUIT:
101 | pygame.quit()
102 | sys.exit()
103 | if not game_over and not win:
104 | if event.type == pygame.KEYDOWN:
105 | if event.key == pygame.K_SPACE:
106 | # 弾を発射
107 | bullet = pygame.Rect(player_x + player_width//2 - bullet_width//2, player_y, bullet_width, bullet_height)
108 | bullets.append(bullet)
109 | # 効果音を確実に再生するためにstopしてからplay
110 | shoot_sound.stop()
111 | shoot_sound.play()
112 |
113 | keys = pygame.key.get_pressed()
114 | if not game_over and not win:
115 | if keys[pygame.K_LEFT] and player_x > 0:
116 | player_x -= player_speed
117 | if keys[pygame.K_RIGHT] and player_x < WIDTH - player_width:
118 | player_x += player_speed
119 |
120 | # 弾の移動
121 | for b in bullets[:]:
122 | b.y -= bullet_speed
123 | if b.y < 0:
124 | bullets.remove(b)
125 | else:
126 | # インベーダーとの当たり判定
127 | for inv in invaders[:]:
128 | if b.colliderect(inv):
129 | invaders.remove(inv)
130 | if b in bullets:
131 | bullets.remove(b)
132 | # 効果音を確実に再生するためにstopしてからplay
133 | invader_hit_sound.stop()
134 | invader_hit_sound.play()
135 | break
136 |
137 | # インベーダーの移動
138 | move_down = False
139 | for inv in invaders:
140 | inv.x += invader_speed * invader_direction
141 | if inv.x <= 0 or inv.x + invader_width >= WIDTH:
142 | move_down = True
143 | if move_down:
144 | invader_direction *= -1
145 | for inv in invaders:
146 | inv.y += invader_height // 2
147 |
148 | # 敵の弾発射
149 | if random.randint(0, 60) == 0 and invaders:
150 | shooter = random.choice(invaders)
151 | eb = pygame.Rect(shooter.x + invader_width//2 - bullet_width//2, shooter.y + invader_height, bullet_width, bullet_height)
152 | enemy_bullets.append(eb)
153 |
154 | # 敵の弾の移動
155 | for eb in enemy_bullets[:]:
156 | eb.y += enemy_bullet_speed
157 | if eb.y > HEIGHT:
158 | enemy_bullets.remove(eb)
159 | elif eb.colliderect(pygame.Rect(player_x, player_y, player_width, player_height)):
160 | game_over = True
161 | if not player_hit_played:
162 | player_hit_sound.stop()
163 | player_hit_sound.play()
164 | player_hit_played = True
165 |
166 | # インベーダーが下まで来たらゲームオーバー
167 | for inv in invaders:
168 | if inv.y + invader_height >= player_y:
169 | game_over = True
170 | if not player_hit_played:
171 | player_hit_sound.stop()
172 | player_hit_sound.play()
173 | player_hit_played = True
174 |
175 | # 勝利判定
176 | if not invaders:
177 | win = True
178 | if not sound_played:
179 | win_sound.stop()
180 | win_sound.play()
181 | sound_played = True
182 |
183 | elif game_over and not sound_played:
184 | lose_sound.stop()
185 | lose_sound.play()
186 | sound_played = True
187 |
188 | draw()
189 |
190 |
191 |
192 |
193 |
--------------------------------------------------------------------------------
/chat_bot.yml:
--------------------------------------------------------------------------------
1 | app:
2 | description: Dify講座用に制作したアプリです。
3 | icon: 🤖
4 | icon_background: '#FFEAD5'
5 | mode: advanced-chat
6 | name: udemy-テックジムのチャットボット
7 | use_icon_as_answer_icon: false
8 | dependencies:
9 | - current_identifier: null
10 | type: marketplace
11 | value:
12 | marketplace_plugin_unique_identifier: langgenius/openai:0.0.11@390c87cc0f17370a70d3b214cd71a8de81fe9d6b52e6a38287acde034138b672
13 | kind: app
14 | version: 0.1.5
15 | workflow:
16 | conversation_variables: []
17 | environment_variables: []
18 | features:
19 | file_upload:
20 | allowed_file_extensions:
21 | - .JPG
22 | - .JPEG
23 | - .PNG
24 | - .GIF
25 | - .WEBP
26 | - .SVG
27 | allowed_file_types:
28 | - image
29 | allowed_file_upload_methods:
30 | - local_file
31 | - remote_url
32 | enabled: false
33 | fileUploadConfig:
34 | audio_file_size_limit: 50
35 | batch_count_limit: 5
36 | file_size_limit: 15
37 | image_file_size_limit: 10
38 | video_file_size_limit: 100
39 | workflow_file_upload_limit: 10
40 | image:
41 | enabled: false
42 | number_limits: 3
43 | transfer_methods:
44 | - local_file
45 | - remote_url
46 | number_limits: 3
47 | opening_statement: ''
48 | retriever_resource:
49 | enabled: false
50 | sensitive_word_avoidance:
51 | enabled: false
52 | speech_to_text:
53 | enabled: false
54 | suggested_questions: []
55 | suggested_questions_after_answer:
56 | enabled: false
57 | text_to_speech:
58 | enabled: false
59 | language: ''
60 | voice: ''
61 | graph:
62 | edges:
63 | - data:
64 | isInIteration: false
65 | sourceType: question-classifier
66 | targetType: code
67 | id: 1739284487784-2-1739284505764-target
68 | selected: false
69 | source: '1739284487784'
70 | sourceHandle: '2'
71 | target: '1739284505764'
72 | targetHandle: target
73 | type: custom
74 | zIndex: 0
75 | - data:
76 | isInIteration: false
77 | sourceType: if-else
78 | targetType: answer
79 | id: 1739286297063-false-answer-target
80 | selected: false
81 | source: '1739286297063'
82 | sourceHandle: 'false'
83 | target: answer
84 | targetHandle: target
85 | type: custom
86 | zIndex: 0
87 | - data:
88 | isInIteration: false
89 | sourceType: code
90 | targetType: answer
91 | id: 1739284505764-source-1739284498867-target
92 | selected: false
93 | source: '1739284505764'
94 | sourceHandle: source
95 | target: '1739284498867'
96 | targetHandle: target
97 | type: custom
98 | zIndex: 0
99 | - data:
100 | isInIteration: false
101 | sourceType: if-else
102 | targetType: code
103 | id: 1739286297063-true-1739283045971-target
104 | selected: false
105 | source: '1739286297063'
106 | sourceHandle: 'true'
107 | target: '1739283045971'
108 | targetHandle: target
109 | type: custom
110 | zIndex: 0
111 | - data:
112 | isInIteration: false
113 | sourceType: code
114 | targetType: answer
115 | id: 1739283045971-source-1739284338072-target
116 | selected: false
117 | source: '1739283045971'
118 | sourceHandle: source
119 | target: '1739284338072'
120 | targetHandle: target
121 | type: custom
122 | zIndex: 0
123 | - data:
124 | isInIteration: false
125 | sourceType: start
126 | targetType: question-classifier
127 | id: 1739280377346-source-1739284487784-target
128 | selected: false
129 | source: '1739280377346'
130 | sourceHandle: source
131 | target: '1739284487784'
132 | targetHandle: target
133 | type: custom
134 | zIndex: 0
135 | - data:
136 | isInIteration: false
137 | sourceType: question-classifier
138 | targetType: knowledge-retrieval
139 | id: 1739284487784-1-1739530240931-target
140 | selected: false
141 | source: '1739284487784'
142 | sourceHandle: '1'
143 | target: '1739530240931'
144 | targetHandle: target
145 | type: custom
146 | zIndex: 0
147 | - data:
148 | isInIteration: false
149 | sourceType: knowledge-retrieval
150 | targetType: llm
151 | id: 1739530240931-source-llm-target
152 | selected: false
153 | source: '1739530240931'
154 | sourceHandle: source
155 | target: llm
156 | targetHandle: target
157 | type: custom
158 | zIndex: 0
159 | - data:
160 | isInIteration: false
161 | sourceType: llm
162 | targetType: if-else
163 | id: llm-source-1739530513253-target
164 | selected: false
165 | source: llm
166 | sourceHandle: source
167 | target: '1739530513253'
168 | targetHandle: target
169 | type: custom
170 | zIndex: 0
171 | - data:
172 | isInIteration: false
173 | sourceType: if-else
174 | targetType: code
175 | id: 1739530513253-true-1739280589362-target
176 | selected: false
177 | source: '1739530513253'
178 | sourceHandle: 'true'
179 | target: '1739280589362'
180 | targetHandle: target
181 | type: custom
182 | zIndex: 0
183 | - data:
184 | isInIteration: false
185 | sourceType: if-else
186 | targetType: answer
187 | id: 1739530513253-false-1739530749873-target
188 | source: '1739530513253'
189 | sourceHandle: 'false'
190 | target: '1739530749873'
191 | targetHandle: target
192 | type: custom
193 | zIndex: 0
194 | - data:
195 | isInIteration: false
196 | sourceType: code
197 | targetType: llm
198 | id: 1739280589362-source-1739530786233-target
199 | source: '1739280589362'
200 | sourceHandle: source
201 | target: '1739530786233'
202 | targetHandle: target
203 | type: custom
204 | zIndex: 0
205 | - data:
206 | isInIteration: false
207 | sourceType: llm
208 | targetType: if-else
209 | id: 1739530786233-source-1739286297063-target
210 | source: '1739530786233'
211 | sourceHandle: source
212 | target: '1739286297063'
213 | targetHandle: target
214 | type: custom
215 | zIndex: 0
216 | nodes:
217 | - data:
218 | desc: ''
219 | selected: false
220 | title: 開始
221 | type: start
222 | variables: []
223 | height: 53
224 | id: '1739280377346'
225 | position:
226 | x: 750.0809449645283
227 | y: 202.00574104931894
228 | positionAbsolute:
229 | x: 750.0809449645283
230 | y: 202.00574104931894
231 | selected: false
232 | sourcePosition: right
233 | targetPosition: left
234 | type: custom
235 | width: 243
236 | - data:
237 | context:
238 | enabled: true
239 | variable_selector:
240 | - '1739530240931'
241 | - result
242 | desc: ''
243 | memory:
244 | query_prompt_template: '{{#sys.query#}}'
245 | role_prefix:
246 | assistant: ''
247 | user: ''
248 | window:
249 | enabled: false
250 | size: 3
251 | model:
252 | completion_params:
253 | temperature: 0.7
254 | mode: chat
255 | name: gpt-4o-mini
256 | provider: langgenius/openai/openai
257 | prompt_template:
258 | - id: 0d6fd02f-75e6-4119-99c0-f5f7bf7d9526
259 | role: system
260 | text: 'ユーザーからの質問に対して、情報をもとに回答を生成してください。もし近しい情報がない場合は「unanswerable」とだけ回答すること。
261 |
262 |
263 | 情報
264 |
265 | {{#context#}}'
266 | selected: false
267 | title: LLM
268 | type: llm
269 | variables: []
270 | vision:
271 | enabled: false
272 | height: 89
273 | id: llm
274 | position:
275 | x: 1046.8950060160985
276 | y: 347.04731647655007
277 | positionAbsolute:
278 | x: 1046.8950060160985
279 | y: 347.04731647655007
280 | selected: false
281 | sourcePosition: right
282 | targetPosition: left
283 | type: custom
284 | width: 243
285 | - data:
286 | answer: '{{#1739530786233.text#}}'
287 | desc: ''
288 | selected: false
289 | title: 回答
290 | type: answer
291 | variables: []
292 | height: 104
293 | id: answer
294 | position:
295 | x: 2212.0551952319747
296 | y: 609.4486616537449
297 | positionAbsolute:
298 | x: 2212.0551952319747
299 | y: 609.4486616537449
300 | selected: false
301 | sourcePosition: right
302 | targetPosition: left
303 | type: custom
304 | width: 243
305 | - data:
306 | code: "import requests\n\ndef main() -> dict:\n url = \"https://script.google.com/macros/s/AKfycbx55X2Ry4ywhUid1R_MrOTB_mkYLny04lTkhwxzDpAzejRe40mILJjJSAEnTGWsJfQu/exec\"\
307 | \n \n try:\n response = requests.get(url)\n response.raise_for_status()\n\
308 | \ data = response.json()\n return {'result': str(data)}\n\
309 | \ except requests.exceptions.RequestException:\n return {'result':\
310 | \ None}"
311 | code_language: python3
312 | desc: ''
313 | outputs:
314 | result:
315 | children: null
316 | type: string
317 | selected: false
318 | title: スプレッドシートから情報取得
319 | type: code
320 | variables: []
321 | height: 53
322 | id: '1739280589362'
323 | position:
324 | x: 1631.6836915425356
325 | y: 202.00574104931894
326 | positionAbsolute:
327 | x: 1631.6836915425356
328 | y: 202.00574104931894
329 | selected: false
330 | sourcePosition: right
331 | targetPosition: left
332 | type: custom
333 | width: 243
334 | - data:
335 | code: "import requests\nimport urllib.parse\nURL = \"https://script.google.com/macros/s/AKfycbx55X2Ry4ywhUid1R_MrOTB_mkYLny04lTkhwxzDpAzejRe40mILJjJSAEnTGWsJfQu/exec\"\
336 | \ndef main(id: str, content: str):\n data = {\n \"action\": \"\
337 | add_question\",\n \"id\": id,\n \"content\": urllib.parse.quote(content)\n\
338 | \ }\n try:\n response = requests.post(URL, data=data)\n \
339 | \ response.raise_for_status()\n return {'result': 'ok'}\n \
340 | \ except requests.exceptions.RequestException as e:\n print(f\"Error\
341 | \ posting question: {e}\")\n return None"
342 | code_language: python3
343 | desc: ''
344 | outputs:
345 | result:
346 | children: null
347 | type: string
348 | selected: false
349 | title: 回答できなかった質問を記録
350 | type: code
351 | variables:
352 | - value_selector:
353 | - sys
354 | - conversation_id
355 | variable: id
356 | - value_selector:
357 | - sys
358 | - query
359 | variable: content
360 | height: 53
361 | id: '1739283045971'
362 | position:
363 | x: 2212.0551952319747
364 | y: 202.00574104931894
365 | positionAbsolute:
366 | x: 2212.0551952319747
367 | y: 202.00574104931894
368 | selected: false
369 | sourcePosition: right
370 | targetPosition: left
371 | type: custom
372 | width: 243
373 | - data:
374 | answer: 'ご質問に関する情報が取得できませんでした。
375 |
376 | ご質問の内容については記録させていただき、後日学習します。
377 |
378 |
379 | 回答の用意が出来次第、お客様にご連絡することも可能ですので、お名前とご連絡先を教えていただけますか?追加での質問もあればご記載ください。
380 |
381 |
382 | 連絡を希望しない場合も引き続きご質問いただけます。
383 |
384 |
385 | (コピーの上お使いください)
386 |
387 | お名前:
388 |
389 | メールアドレス:
390 |
391 | その他ご質問・ご要望など:'
392 | desc: ''
393 | selected: false
394 | title: 回答 2
395 | type: answer
396 | variables: []
397 | height: 277
398 | id: '1739284338072'
399 | position:
400 | x: 2212.0551952319747
401 | y: 275.4407625154072
402 | positionAbsolute:
403 | x: 2212.0551952319747
404 | y: 275.4407625154072
405 | selected: false
406 | sourcePosition: right
407 | targetPosition: left
408 | type: custom
409 | width: 243
410 | - data:
411 | classes:
412 | - id: '1'
413 | name: 質問
414 | - id: '2'
415 | name: ユーザーの連絡先に関する情報
416 | desc: ''
417 | instructions: ''
418 | model:
419 | completion_params:
420 | temperature: 0.7
421 | mode: chat
422 | name: gpt-4o-mini
423 | provider: langgenius/openai/openai
424 | query_variable_selector:
425 | - '1739280377346'
426 | - sys.query
427 | selected: false
428 | title: 質問かどうか分類
429 | topics: []
430 | type: question-classifier
431 | vision:
432 | enabled: false
433 | height: 171
434 | id: '1739284487784'
435 | position:
436 | x: 750.0809449645283
437 | y: 297.60729519228016
438 | positionAbsolute:
439 | x: 750.0809449645283
440 | y: 297.60729519228016
441 | selected: false
442 | sourcePosition: right
443 | targetPosition: left
444 | type: custom
445 | width: 243
446 | - data:
447 | answer: '連絡先をご教示いただきありがとうございました。
448 |
449 | 後日担当者よりご連絡いたしますので、しばらくお待ちください。
450 |
451 |
452 | 引き続き質問があればお伝えください。'
453 | desc: ''
454 | selected: false
455 | title: 返答
456 | type: answer
457 | variables: []
458 | height: 165
459 | id: '1739284498867'
460 | position:
461 | x: 1342.1398014648446
462 | y: 491.7071183576908
463 | positionAbsolute:
464 | x: 1342.1398014648446
465 | y: 491.7071183576908
466 | selected: false
467 | sourcePosition: right
468 | targetPosition: left
469 | type: custom
470 | width: 243
471 | - data:
472 | code: "import requests\nimport urllib.parse\nURL = \"https://script.google.com/macros/s/AKfycbx55X2Ry4ywhUid1R_MrOTB_mkYLny04lTkhwxzDpAzejRe40mILJjJSAEnTGWsJfQu/exec\"\
473 | \ndef main(id: str, address: str):\n data = {\n \"action\": \"\
474 | add_contact\",\n \"id\": id,\n \"address\": urllib.parse.quote(address)\n\
475 | \ }\n try:\n response = requests.post(URL, data=data)\n \
476 | \ response.raise_for_status()\n return {'result': 'ok'}\n \
477 | \ except requests.exceptions.RequestException as e:\n print(f\"Error\
478 | \ posting contact: {e}\")\n return None"
479 | code_language: python3
480 | desc: ''
481 | outputs:
482 | result:
483 | children: null
484 | type: string
485 | selected: false
486 | title: 連絡先の追加
487 | type: code
488 | variables:
489 | - value_selector:
490 | - sys
491 | - conversation_id
492 | variable: id
493 | - value_selector:
494 | - sys
495 | - query
496 | variable: address
497 | height: 53
498 | id: '1739284505764'
499 | position:
500 | x: 1046.8950060160985
501 | y: 491.7071183576908
502 | positionAbsolute:
503 | x: 1046.8950060160985
504 | y: 491.7071183576908
505 | selected: true
506 | sourcePosition: right
507 | targetPosition: left
508 | type: custom
509 | width: 243
510 | - data:
511 | cases:
512 | - case_id: 'true'
513 | conditions:
514 | - comparison_operator: contains
515 | id: 399635ad-3805-4c3a-a582-261cd3319aa9
516 | value: No Item
517 | varType: string
518 | variable_selector:
519 | - '1739530786233'
520 | - text
521 | id: 'true'
522 | logical_operator: and
523 | desc: ''
524 | selected: false
525 | title: IF/ELSE
526 | type: if-else
527 | height: 125
528 | id: '1739286297063'
529 | position:
530 | x: 1922.6467080715329
531 | y: 325.0905254879139
532 | positionAbsolute:
533 | x: 1922.6467080715329
534 | y: 325.0905254879139
535 | selected: false
536 | sourcePosition: right
537 | targetPosition: left
538 | type: custom
539 | width: 243
540 | - data:
541 | dataset_ids:
542 | - XxMv5UYyUFPV2auBF3R9IPGrsaGIfsDVb37ftcclPgNvRzkdkF69rJ75HUsNjnNY
543 | desc: ''
544 | multiple_retrieval_config:
545 | reranking_enable: true
546 | reranking_mode: weighted_score
547 | reranking_model:
548 | model: ''
549 | provider: ''
550 | score_threshold: null
551 | top_k: 4
552 | weights:
553 | keyword_setting:
554 | keyword_weight: 0.3
555 | vector_setting:
556 | embedding_model_name: text-embedding-3-large
557 | embedding_provider_name: langgenius/openai/openai
558 | vector_weight: 0.7
559 | query_variable_selector:
560 | - '1739280377346'
561 | - sys.query
562 | retrieval_mode: multiple
563 | selected: false
564 | title: 知識取得
565 | type: knowledge-retrieval
566 | height: 91
567 | id: '1739530240931'
568 | position:
569 | x: 1046.8950060160985
570 | y: 202.00574104931894
571 | positionAbsolute:
572 | x: 1046.8950060160985
573 | y: 202.00574104931894
574 | selected: false
575 | sourcePosition: right
576 | targetPosition: left
577 | type: custom
578 | width: 243
579 | - data:
580 | cases:
581 | - case_id: 'true'
582 | conditions:
583 | - comparison_operator: contains
584 | id: 4baa4561-1094-4dc5-97ca-33f20cb2b90c
585 | value: unanswerable
586 | varType: string
587 | variable_selector:
588 | - llm
589 | - text
590 | id: 'true'
591 | logical_operator: and
592 | desc: ''
593 | selected: false
594 | title: IF/ELSE 2
595 | type: if-else
596 | height: 125
597 | id: '1739530513253'
598 | position:
599 | x: 1342.1398014648446
600 | y: 202.00574104931894
601 | positionAbsolute:
602 | x: 1342.1398014648446
603 | y: 202.00574104931894
604 | selected: false
605 | sourcePosition: right
606 | targetPosition: left
607 | type: custom
608 | width: 243
609 | - data:
610 | answer: '{{#llm.text#}}'
611 | desc: ''
612 | selected: false
613 | title: 回答 4
614 | type: answer
615 | variables: []
616 | height: 104
617 | id: '1739530749873'
618 | position:
619 | x: 1631.6836915425356
620 | y: 275.4407625154072
621 | positionAbsolute:
622 | x: 1631.6836915425356
623 | y: 275.4407625154072
624 | selected: false
625 | sourcePosition: right
626 | targetPosition: left
627 | type: custom
628 | width: 243
629 | - data:
630 | context:
631 | enabled: false
632 | variable_selector: []
633 | desc: ''
634 | model:
635 | completion_params:
636 | temperature: 0.7
637 | mode: chat
638 | name: gpt-4o-mini
639 | provider: langgenius/openai/openai
640 | prompt_template:
641 | - id: 163dfa4b-d4a0-40d9-bc31-ad234424e752
642 | role: system
643 | text: 'ユーザーからの質問に対して、以下のFAQリストをもとに回答を生成してください。もし当てはまる情報がない場合は「No Item」とだけ回答すること。
644 |
645 |
646 | FAQリスト
647 |
648 | {{#1739280589362.result#}}'
649 | - id: 34e820d3-fa23-478c-a3f7-e45d447a53b8
650 | role: user
651 | text: '{{#sys.query#}}'
652 | selected: false
653 | title: LLM 2
654 | type: llm
655 | variables: []
656 | vision:
657 | enabled: false
658 | height: 89
659 | id: '1739530786233'
660 | position:
661 | x: 1922.6467080715329
662 | y: 202.00574104931894
663 | positionAbsolute:
664 | x: 1922.6467080715329
665 | y: 202.00574104931894
666 | selected: false
667 | sourcePosition: right
668 | targetPosition: left
669 | type: custom
670 | width: 243
671 | viewport:
672 | x: -623.9074262194733
673 | y: -13.01811518137373
674 | zoom: 0.8307422529795685
675 |
--------------------------------------------------------------------------------
/kessan.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 決算書作成スプレッドシート
7 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
取引入力シート
142 |
143 |
使い方:
144 |
145 | - 銀行口座の取引データを下の表に入力してください
146 | - 各取引に適切な勘定科目を選択してください
147 | - 事業用の取引のみチェックを入れてください
148 | - 入力後、「計算実行」ボタンを押してください
149 |
150 |
151 | 借入金返済について:
152 | • 借入時:勘定科目「借入金(借入時)」を選択、入金額に金額を入力
153 | • 返済時(元本):勘定科目「借入金返済(元本)」を選択、出金額に元本返済額を入力
154 | • 返済時(利息):勘定科目「支払利息」を選択、出金額に利息分を入力
155 | ※ 元本返済と利息支払いは別々の行で入力してください
156 |
157 |
158 |
159 |
160 |
209 |
210 |
211 |
212 |
213 |
214 |
試算表
215 |
216 | 注意: 取引入力シートで「計算実行」を押してから確認してください。
217 |
218 |
219 |
220 |
221 | | 勘定科目 |
222 | 借方合計 |
223 | 貸方合計 |
224 | 差額(借方) |
225 | 差額(貸方) |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
損益計算書
236 |
237 | 注意: 取引入力シートで「計算実行」を押してから確認してください。
238 |
239 |
240 |
収益の部
241 |
242 |
243 |
244 | | 科目 |
245 | 金額 |
246 |
247 |
248 |
249 |
250 |
251 |
252 |
費用の部
253 |
254 |
255 |
256 | | 科目 |
257 | 金額 |
258 |
259 |
260 |
261 |
262 |
263 |
264 |
税金・損益
265 |
266 |
267 | | 税引前当期純利益 |
268 | 0 |
269 |
270 |
271 | | 法人税等 |
272 | 0 |
273 |
274 |
275 | | 当期純利益(税引後) |
276 | 0 |
277 |
278 |
279 | |
280 |
281 | 税金について:
282 | • 法人の場合:税引前利益に約30%の法人税等がかかります
283 | • 個人事業主の場合:所得税・住民税・事業税等の計算が必要です
284 | • 正確な税額は税理士にご相談ください
285 |
286 | |
287 |
288 |
289 |
290 |
291 |
292 |
293 |
貸借対照表
294 |
295 | 注意: 取引入力シートで「計算実行」を押してから確認してください。
296 |
297 |
298 |
299 |
300 |
資産の部
301 |
302 |
303 |
304 | | 科目 |
305 | 金額 |
306 |
307 |
308 |
309 |
310 |
311 |
312 |
313 |
314 |
負債・純資産の部
315 |
316 |
317 |
318 | | 科目 |
319 | 金額 |
320 |
321 |
322 |
323 |
324 |
325 |
326 |
327 |
328 |
329 |
330 |
722 |
723 |
--------------------------------------------------------------------------------