回答編集履歴

3

不要な箇所を削除

2023/02/17 06:27

投稿

batakel
batakel

スコア1

test CHANGED
@@ -2,5 +2,5 @@
2
2
 
3
3
  ご回答いただきありがとうございました。解決しました。
4
4
  ご指摘いただいた通り、pygame.event.get()をメインループとOnOff()関数の両方で使用しているのが原因だったようです。
5
- お書きいただいた「メインループでイベントの取得を行ない、イベントによって動作を振り分けるつくりにする」という内容とは異なるかもしれませんが、下記のコードに修正したところ動作が安定しました。
5
+
6
6
  本当にありがとうございました。

2

回答者の名前を間違えていたため

2023/02/17 06:26

投稿

batakel
batakel

スコア1

test CHANGED
@@ -1,4 +1,4 @@
1
- TakakiY様
1
+ TakaiY様
2
2
 
3
3
  ご回答いただきありがとうございました。解決しました。
4
4
  ご指摘いただいた通り、pygame.event.get()をメインループとOnOff()関数の両方で使用しているのが原因だったようです。

1

誤って自己解決とは別に書き込んでしまったため

2023/02/17 06:24

投稿

batakel
batakel

スコア1

test CHANGED
@@ -4,68 +4,3 @@
4
4
  ご指摘いただいた通り、pygame.event.get()をメインループとOnOff()関数の両方で使用しているのが原因だったようです。
5
5
  お書きいただいた「メインループでイベントの取得を行ない、イベントによって動作を振り分けるつくりにする」という内容とは異なるかもしれませんが、下記のコードに修正したところ動作が安定しました。
6
6
  本当にありがとうございました。
7
- ---
8
-
9
- ```Python
10
- import pygame
11
- from pygame.locals import *
12
- import threading
13
- import time
14
-
15
- #Pygame関連の初期化
16
- pygame.init()
17
- pygame.joystick.init()
18
- joys = pygame.joystick.Joystick(0)
19
- joys.init() #ゲームパッドの初期化
20
-
21
-
22
- #ボタンを押した際に取得するe.buttonの値
23
- """
24
- LBボタン:4
25
- RBボタン:5
26
- """
27
-
28
- n1 = 512 #変更する値の初期値
29
- switch = 0 #ボタンから指が離れた状態の値を定義
30
-
31
- #ボタンを押したか離したかの判定
32
- def OnOff():
33
- while True:
34
- global switch
35
- global e #追加箇所
36
- for e in pygame.event.get():
37
- if e.type == pygame.locals.JOYBUTTONDOWN: #ボタンが押された場合
38
- switch = 1
39
- if e.type == pygame.locals.JOYBUTTONUP: #ボタンから指が離れた場合
40
- switch = 0
41
-
42
- #0.5秒ごとに値をターミナルに表示
43
- def Display():
44
- while True:
45
- print('現在値:{}'.format(n1))
46
- time.sleep(0.5)
47
-
48
- #ボタン押し離しの判定と現在値表示の開始
49
- Th1 = threading.Thread(target=OnOff)
50
- Th2 = threading.Thread(target=Display)
51
- Th1.start()
52
- Th2.start()
53
-
54
- #ボタン入力による値の変更
55
- while True:
56
- #for e in pygame.event.get(): #削除
57
- if switch == 1: #修正
58
- pushed = int(e.button)
59
-
60
- if pushed == 4:
61
- while switch == 1:
62
- n1 += -1
63
- if n1 < 0:
64
- n1 = 0
65
- time.sleep(0.2)
66
- if pushed == 5:
67
- while switch == 1:
68
- n1 += 1
69
- if n1 > 1023:
70
- n1 = 1023
71
- time.sleep(0.2)