pygame.error: File is not a Windows BMP file error: Why this error?

Beatrice_Smart1e

I have been working on a typing speed test game based off Pygame. I try to run the code, but I keep getting this error:

    Traceback (most recent call last):
  File "/Users/beatricecesonyte/Downloads/python-project-typing-speed-game/speed typing.py", line 170, in <module>
    Game().run()
  File "/Users/beatricecesonyte/Downloads/python-project-typing-speed-game/speed typing.py", line 30, in __init__
    self.open_img = pygame.image.load('type-speed-open.png')
pygame.error: File is not a Windows BMP file

Here is my code:

import pygame
from pygame.locals import *
import sys
import time
import random

#750 x 500    
    
class Game:
   
    def __init__(self):
        self.w=750
        self.h=500
        self.reset=True
        self.active = False
        self.input_text=''
        self.word = ''
        self.time_start = 0
        self.total_time = 0
        self.accuracy = '0%'
        self.results = 'Time:0 Accuracy:0 % Wpm:0 '
        self.wpm = 0
        self.end = False
        self.HEAD_C = (255,213,102)
        self.TEXT_C = (240,240,240)
        self.RESULT_C = (255,70,70)
        
       
        pygame.init()
        self.open_img = pygame.image.load('type-speed-open.png')
        self.open_img = pygame.transform.scale(self.open_img, (self.w,self.h))


        self.bg = pygame.image.load('background.jpg')
        self.bg = pygame.transform.scale(self.bg, (500,750))

        self.screen = pygame.display.set_mode((self.w,self.h))
        pygame.display.set_caption('Type Speed test')
       
        
    def draw_text(self, screen, msg, y ,fsize, color):
        font = pygame.font.Font(None, fsize)
        text = font.render(msg, 1,color)
        text_rect = text.get_rect(center=(self.w/2, y))
        screen.blit(text, text_rect)
        pygame.display.update()   
        
    def get_sentence(self):
        f = open('sentences.txt').read()
        sentences = f.split('\n')
        sentence = random.choice(sentences)
        return sentence

    def show_results(self, screen):
        if(not self.end):
            #Calculate time
            self.total_time = time.time() - self.time_start
               
            #Calculate accuracy
            count = 0
            for i,c in enumerate(self.word):
                try:
                    if self.input_text[i] == c:
                        count += 1
                except:
                    pass
            self.accuracy = count/len(self.word)*100
           
            #Calculate words per minute
            self.wpm = len(self.input_text)*60/(5*self.total_time)
            self.end = True
            print(self.total_time)
                
            self.results = 'Time:'+str(round(self.total_time)) +" secs   Accuracy:"+ str(round(self.accuracy)) + "%" + '   Wpm: ' + str(round(self.wpm))

            # draw icon image
            self.time_img = pygame.image.load('icon.png')
            self.time_img = pygame.transform.scale(self.time_img, (150,150))
            #screen.blit(self.time_img, (80,320))
            screen.blit(self.time_img, (self.w/2-75,self.h-140))
            self.draw_text(screen,"Reset", self.h - 70, 26, (100,100,100))
            
            print(self.results)
            pygame.display.update()

    def run(self):
        self.reset_game()
    
       
        self.running=True
        while(self.running):
            clock = pygame.time.Clock()
            self.screen.fill((0,0,0), (50,250,650,50))
            pygame.draw.rect(self.screen,self.HEAD_C, (50,250,650,50), 2)
            # update the text of user input
            self.draw_text(self.screen, self.input_text, 274, 26,(250,250,250))
            pygame.display.update()
            for event in pygame.event.get():
                if event.type == QUIT:
                    self.running = False
                    sys.exit()
                elif event.type == pygame.MOUSEBUTTONUP:
                    x,y = pygame.mouse.get_pos()
                    # position of input box
                    if(x>=50 and x<=650 and y>=250 and y<=300):
                        self.active = True
                        self.input_text = ''
                        self.time_start = time.time() 
                     # position of reset box
                    if(x>=310 and x<=510 and y>=390 and self.end):
                        self.reset_game()
                        x,y = pygame.mouse.get_pos()
         
                        
                elif event.type == pygame.KEYDOWN:
                    if self.active and not self.end:
                        if event.key == pygame.K_RETURN:
                            print(self.input_text)
                            self.show_results(self.screen)
                            print(self.results)
                            self.draw_text(self.screen, self.results,350, 28, self.RESULT_C)  
                            self.end = True
                            
                        elif event.key == pygame.K_BACKSPACE:
                            self.input_text = self.input_text[:-1]
                        else:
                            try:
                                self.input_text += event.unicode
                            except:
                                pass
            
            pygame.display.update()
             
                
        clock.tick(60)

    def reset_game(self):
        self.screen.blit(self.open_img, (0,0))

        pygame.display.update()
        time.sleep(1)
        
        self.reset=False
        self.end = False

        self.input_text=''
        self.word = ''
        self.time_start = 0
        self.total_time = 0
        self.wpm = 0

        # Get random sentence 
        self.word = self.get_sentence()
        if (not self.word): self.reset_game()
        #drawing heading
        self.screen.fill((0,0,0))
        self.screen.blit(self.bg,(0,0))
        msg = "Typing Speed Test"
        self.draw_text(self.screen, msg,80, 80,self.HEAD_C)  
        # draw the rectangle for input box
        pygame.draw.rect(self.screen,(255,192,25), (50,250,650,50), 2)

        # draw the sentence string
        self.draw_text(self.screen, self.word,200, 28,self.TEXT_C)
        
        pygame.display.update()



Game().run()

I tried looking on other questions, based off this error, but nothing seems to work...

I am using macOS Catalina, Python 3.8.5 and Pygame 1.9.6.

I am not a pro with python at the moment, so please try to explain clearly!

Thank you!

nordmanden

Your images are PNG filetypes, PyGame by default only supports BMP files. You can either convert your image to BMP before trying to load it, or use another image library such as PIL to handle it.

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

Pygame Error: File is not a windows BMP file

pygame.error: File is not a Windows BMP file on m1 Mac running Mac os Monteray

Python pygame error using font: no such file or directory

Why a Runtime Error reading File

Why there is an error when uploading a file

Windows Batch file execution error

Pygame: pygame.error: Unable to open file .ogg

Windows/Python pygame.error: video system not initialized after adding Mp3 file

Why do I get the 'Excel cannot open the file '(filename).xlsm' error with a file on Mac but not on Windows?

Pygame reading a string off a .txt file and then using as a color error

Error installing pygame on MacOS: 'longintrepr.h' file not found

error: Couldn't open .png file (Python - Pygame library)

Why ajax getting the error from php file?

Why Failed to open file error is happening in this line

Why SQLite file exists but openDatabase gives an error?

why error occur when write csv in the file?

unsure as to why the file errors out as syntax error

File not found error Ray installation Windows

Windows Command line c file compile error

Windows Vim symlink config file persistent error

Rake task error on Windows: No such file or directory

docker-compose error: "no such file or directory" on Windows

Objective C on Windows - Error - CreateProcess: No such file or directory

ERROR : create a file in c disk by cmd in windows?

Error:2 File Not Found - Windows Service

Error piping/redirecting from a file or command in windows

File system error :windows 10 task manager

File operation error on windows network drives

Not a valid Windows application error in PHPStorm file watcher