{"id":6449,"date":"2022-09-03T08:54:33","date_gmt":"2022-09-03T03:24:33","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-trying-to-make-a-solid-block-in-pygame-but-it-doesnt-work\/"},"modified":"2022-09-03T08:54:33","modified_gmt":"2022-09-03T03:24:33","slug":"solved-trying-to-make-a-solid-block-in-pygame-but-it-doesnt-work","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-trying-to-make-a-solid-block-in-pygame-but-it-doesnt-work\/","title":{"rendered":"[Solved] Trying to make a &#8220;solid&#8221; block in pygame but it doesnt work"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-32253474\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"32253474\" data-parentid=\"32209678\" data-score=\"0\" data-position-on-page=\"1\" data-highest-scored=\"1\" data-question-has-accepted-highest-score=\"1\" itemprop=\"acceptedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<p>Sorry about the fact that my code isn&#8217;t based off your&#8217;s, I literally just threw it together in the past 5 minutes so it isn&#8217;t very pretty, but here it is:<\/p>\n<pre><code>from pygame.locals import *\n\nimport pygame\nimport sys\n\nGRAVITY = 1.2\n\nclass Player:\n    def __init__(self, x, y):\n        self.rect = pygame.Rect(x, y, 25, 25)\n        self.yvel = 0\n\n    def tick(self):\n        self.yvel += GRAVITY\n\n        self.rect.y += int(self.yvel)\n\n        if self.rect.y &gt;= 475:\n            self.rect.y = 475\n            self.yvel = 0\n\n    def set(self, y):\n        if y:\n            self.yvel = y\n\nclass Block:\n    def __init__(self, x, y, w, h):\n        self.rect = pygame.Rect(x, y, w, h)\n\nclass Game:\n    def __init__(self):\n        pygame.init()\n        self.screen = pygame.display.set_mode((500, 500))\n        self.player = Player(0, 0)\n        self.block = Block(225, 400, 50, 50)\n\n    def main(self):\n        right = left = False\n        while True:\n            self.screen.fill((230, 230, 230))\n            pygame.draw.rect(self.screen, (40, 40, 40), self.block.rect)\n            pygame.draw.rect(self.screen, (100, 200, 100), self.player.rect)\n\n            pygame.display.flip()\n            for event in pygame.event.get():\n                if event.type == QUIT:\n                    pygame.quit()\n                    sys.exit(0)\n                elif event.type == KEYDOWN:\n                    if event.key == K_SPACE:\n                        self.player.set(-20)\n                    elif event.key == K_RIGHT:\n                        right = True\n                    elif event.key == K_LEFT:\n                        left = True\n                elif event.type == KEYUP:\n                    if event.key == K_RIGHT:\n                        right = False\n                    elif event.key == K_LEFT:\n                        left = False\n\n            if right:\n                self.player.rect.x += 5\n                while self.player.rect.colliderect(self.block.rect):\n                    self.player.rect.x -= 1\n            if left:\n                self.player.rect.x -= 5\n                while self.player.rect.colliderect(self.block.rect):\n                    self.player.rect.x += 1\n            self.player.tick()\n            if self.player.yvel &gt; 0:\n                while self.player.rect.colliderect(self.block.rect):\n                    self.player.rect.y -= 1\n                    self.player.yvel = 0\n            elif self.player.yvel &lt; 0:\n                while self.player.rect.colliderect(self.block.rect):\n                    self.player.rect.y += 1\n                    self.player.yvel = 0\n\ngame = Game()\ngame.main()\n<\/code><\/pre>\n<p>The player speed is quite fast, but that can be changed at the lines:<\/p>\n<pre><code>self.player.rect.x -= 5\n<\/code><\/pre>\n<p>and<\/p>\n<pre><code>self.player.rect.x += 5\n<\/code><\/pre>\n<p>near the bottom.<\/p>\n<p>The way it works is whenever you go to move, it moves the player, then looks to see if if collided with the block. If it did, the player moves in the opposite direction until is is satisfied that it isn&#8217;t colliding any more.<br \/>\nJumping is accomplished using velocity, hence <code>Player.yvel<\/code> and <code>GRAVITY<\/code>. <code>GRAVITY<\/code> can be changed but if it it higher, jumps will be shorter and vice-versa.<\/p>\n<p>Have a play around with the code and experiment with things like the blocks position (<code>self.block = Block(225, 400, 50, 50)<\/code>) and the player&#8217;s staring position (<code>self.player = Player(0, 0)<\/code>)<\/p>\n<p>If you do find any errors in the code, just let me know and I&#8217;ll try to fix them.<\/p>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\">1<\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved Trying to make a &#8220;solid&#8221; block in pygame but it doesnt work <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] Sorry about the fact that my code isn&#8217;t based off your&#8217;s, I literally just threw it together in the past 5 minutes so it isn&#8217;t very pretty, but here it is: from pygame.locals import * import pygame import sys GRAVITY = 1.2 class Player: def __init__(self, x, y): self.rect = pygame.Rect(x, y, 25, 25) &#8230; <a title=\"[Solved] Trying to make a &#8220;solid&#8221; block in pygame but it doesnt work\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-trying-to-make-a-solid-block-in-pygame-but-it-doesnt-work\/\" aria-label=\"More on [Solved] Trying to make a &#8220;solid&#8221; block in pygame but it doesnt work\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[1788,554,349],"class_list":["post-6449","post","type-post","status-publish","format-standard","hentry","category-solved","tag-2d","tag-pygame","tag-python"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Solved] Trying to make a &quot;solid&quot; block in pygame but it doesnt work - JassWeb<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jassweb.com\/solved\/solved-trying-to-make-a-solid-block-in-pygame-but-it-doesnt-work\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] Trying to make a &quot;solid&quot; block in pygame but it doesnt work - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] Sorry about the fact that my code isn&#8217;t based off your&#8217;s, I literally just threw it together in the past 5 minutes so it isn&#8217;t very pretty, but here it is: from pygame.locals import * import pygame import sys GRAVITY = 1.2 class Player: def __init__(self, x, y): self.rect = pygame.Rect(x, y, 25, 25) ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-trying-to-make-a-solid-block-in-pygame-but-it-doesnt-work\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2022-09-03T03:24:33+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-trying-to-make-a-solid-block-in-pygame-but-it-doesnt-work\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-trying-to-make-a-solid-block-in-pygame-but-it-doesnt-work\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] Trying to make a &#8220;solid&#8221; block in pygame but it doesnt work\",\"datePublished\":\"2022-09-03T03:24:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-trying-to-make-a-solid-block-in-pygame-but-it-doesnt-work\/\"},\"wordCount\":186,\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"keywords\":[\"2d\",\"pygame\",\"python\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-trying-to-make-a-solid-block-in-pygame-but-it-doesnt-work\/\",\"url\":\"https:\/\/jassweb.com\/solved\/solved-trying-to-make-a-solid-block-in-pygame-but-it-doesnt-work\/\",\"name\":\"[Solved] Trying to make a \\\"solid\\\" block in pygame but it doesnt work - JassWeb\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#website\"},\"datePublished\":\"2022-09-03T03:24:33+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-trying-to-make-a-solid-block-in-pygame-but-it-doesnt-work\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jassweb.com\/solved\/solved-trying-to-make-a-solid-block-in-pygame-but-it-doesnt-work\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-trying-to-make-a-solid-block-in-pygame-but-it-doesnt-work\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jassweb.com\/solved\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] Trying to make a &#8220;solid&#8221; block in pygame but it doesnt work\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jassweb.com\/solved\/#website\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jassweb.com\/solved\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"contentUrl\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586\",\"contentUrl\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\/\/jassweb.com\"],\"url\":\"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] Trying to make a \"solid\" block in pygame but it doesnt work - JassWeb","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jassweb.com\/solved\/solved-trying-to-make-a-solid-block-in-pygame-but-it-doesnt-work\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] Trying to make a \"solid\" block in pygame but it doesnt work - JassWeb","og_description":"[ad_1] Sorry about the fact that my code isn&#8217;t based off your&#8217;s, I literally just threw it together in the past 5 minutes so it isn&#8217;t very pretty, but here it is: from pygame.locals import * import pygame import sys GRAVITY = 1.2 class Player: def __init__(self, x, y): self.rect = pygame.Rect(x, y, 25, 25) ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-trying-to-make-a-solid-block-in-pygame-but-it-doesnt-work\/","og_site_name":"JassWeb","article_published_time":"2022-09-03T03:24:33+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-trying-to-make-a-solid-block-in-pygame-but-it-doesnt-work\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-trying-to-make-a-solid-block-in-pygame-but-it-doesnt-work\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] Trying to make a &#8220;solid&#8221; block in pygame but it doesnt work","datePublished":"2022-09-03T03:24:33+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-trying-to-make-a-solid-block-in-pygame-but-it-doesnt-work\/"},"wordCount":186,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["2d","pygame","python"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-trying-to-make-a-solid-block-in-pygame-but-it-doesnt-work\/","url":"https:\/\/jassweb.com\/solved\/solved-trying-to-make-a-solid-block-in-pygame-but-it-doesnt-work\/","name":"[Solved] Trying to make a \"solid\" block in pygame but it doesnt work - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2022-09-03T03:24:33+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-trying-to-make-a-solid-block-in-pygame-but-it-doesnt-work\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-trying-to-make-a-solid-block-in-pygame-but-it-doesnt-work\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-trying-to-make-a-solid-block-in-pygame-but-it-doesnt-work\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] Trying to make a &#8220;solid&#8221; block in pygame but it doesnt work"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/6449","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=6449"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/6449\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=6449"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=6449"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=6449"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}