]> Skullheadx's Git Forge - Typer-Noises.git/commitdiff
working now
authorSkullheadx <94652084+Skullheadx@users.noreply.github.com>
Fri, 30 Dec 2022 03:31:38 +0000 (22:31 -0500)
committerSkullheadx <94652084+Skullheadx@users.noreply.github.com>
Fri, 30 Dec 2022 03:31:38 +0000 (22:31 -0500)
main.py
typer_game.py

diff --git a/main.py b/main.py
index 20b40a19edc0f2c6f7a3630704f8d8b9bbdcab68..00242eae50af2ae526649afd0a7890f72412d8dc 100644 (file)
--- a/main.py
+++ b/main.py
@@ -1,11 +1,10 @@
 import threading
 import time
-import pyautogui
 from pygame import mixer
 from pynput import keyboard
 
 
-with open("test.txt", "r") as f:
+with open("YoshikageKira.txt", "r") as f:
     script = f.read()
 
 mixer.init()
@@ -19,8 +18,9 @@ def typer():
     mixer.music.play(-1)
     k = keyboard.Controller()
     for char in script:
-        if char == keyboard.Key.enter:
+        if char == "\n":
             char = keyboard.Key.enter
+        # print(f"{char=}, {keyboard.Key.enter}", end='')
         k.press(char)
         time.sleep(delay)
         k.release(char)
index a640cffe7398011e02242679790e3dd3b3c4290a..02db39650f9f02ac4ac38dfb49d1e88a3a7bb934 100644 (file)
@@ -2,7 +2,7 @@ import pygame
 
 pygame.init()
 
-WIDTH, HEIGHT = 720, 720
+WIDTH, HEIGHT = 1080, 640
 
 screen = pygame.display.set_mode((WIDTH, HEIGHT))
 pygame.display.set_caption("Bee Movie Typer")
@@ -22,47 +22,80 @@ class Words:
     with open("BeeMovieScript.txt", "r") as f:
         script = f.read()
 
-    font = pygame.font.Font("MonospaceTypewriter.ttf", 10)
+    font = pygame.font.Font("MonospaceTypewriter.ttf", 35)
 
     lines = script.split('\n')
 
     def __init__(self):
-        self.words = [self.font.render(word, True, GRAY) for word in self.lines]
+        self.left_bound, self.right_bound = WIDTH * 0.05, WIDTH * 0.8
+
+        self.words = []
+        for l in self.lines:
+            line = ""
+            l = l.split()
+            for i, word in enumerate(l):
+                line += word + ' '
+                rendered = self.font.render(line, True, GRAY)
+                if rendered.get_width() >= self.right_bound or i == len(l) - 1:
+                    self.words.append(rendered)
+                    line = ""
+        for i in self.words:
+            if i.get_width() > self.right_bound:
+                self.right_bound = i.get_width()
+
         self.index = 0
         self.typed_words = [""]
         self.display_words = [self.font.render("", True, BLACK)]
+        self.position = pygame.Vector2(self.left_bound, HEIGHT/2)
+
+        self.draw_cursor = True
+        self.time = 0
 
     def update(self, delta):
         for event in pygame.event.get():
-            print(event)
             if event.type == pygame.QUIT:
                 return COMMAND_EXIT
             elif event.type == pygame.TEXTINPUT:
                 char = event.text
+                if self.display_words[-1].get_width() >= self.words[len(self.display_words) - 1].get_width():
+                    self.add_new_line()
+
                 self.typed_words[-1] += char
                 self.display_words[-1] = self.font.render(self.typed_words[-1], True, BLACK, WHITE)
                 if char == self.script[self.index]:
                     self.index += 1
-
             elif event.type == pygame.KEYDOWN:
                 if event.key == pygame.K_BACKSPACE:
                     self.typed_words[-1] = self.typed_words[-1][:-1]
                     self.display_words[-1] = self.font.render(self.typed_words[-1], True, BLACK, WHITE)
 
                 elif event.key == pygame.K_RETURN:
-                    self.typed_words.append("")
-                    self.display_words.append(self.font.render("", True, BLACK))
+                    self.add_new_line()
+
+        if self.time >= 500:
+            self.draw_cursor = not self.draw_cursor
+            self.time = 0
+        self.time += delta
+    def add_new_line(self):
+        self.position.y -= self.display_words[-1].get_height()
+        self.typed_words.append("")
+        self.display_words.append(self.font.render("", True, BLACK))
+
 
     def draw(self, surf):
         surf.fill(WHITE)
-        prev = pygame.Vector2(0, 0)
+        prev = self.position.copy()
         for word in self.words:
             surf.blit(word, word.get_rect(topleft=prev))
             prev.y += word.get_height()
-        prev = pygame.Vector2(0, 0)
+        prev = self.position.copy()
         for word in self.display_words:
             surf.blit(word, word.get_rect(topleft=prev))
             prev.y += word.get_height()
+        # pygame.draw.line(surf, BLACK, (self.left_bound, 0), (self.left_bound, HEIGHT))
+        # pygame.draw.line(surf, BLACK, (self.right_bound, 0), (self.right_bound, HEIGHT))
+        if self.draw_cursor:
+            pygame.draw.line(surf, BLACK, (prev.x + self.display_words[-1].get_width(),prev.y - self.display_words[-1].get_height()),(prev.x + self.display_words[-1].get_width(),prev.y))
 
 
 game = Words()