Jaseman125

Python Circle Demo

Aug 22nd, 2012
392
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # CIRCLE DEMO
  2.  
  3. # By Jaseman - 22nd August 2012
  4.  
  5. import os, random, pygame; from pygame.locals import *
  6. from math import sin, cos, pi
  7. pygame.init(); clock = pygame.time.Clock()
  8. os.environ['SDL_VIDEO_WINDOW_POS'] = 'center'
  9. pygame.display.set_caption("Circle Demo")
  10. screen=pygame.display.set_mode((800,600),0,32)
  11.  
  12. bk=pygame.Surface((800,600)); bk.fill((0,64,0))
  13. dot=pygame.Surface((4,4)); dot.set_colorkey([0,0,0])
  14. pygame.draw.circle(dot,(255,255,255),(2,2),2,0)
  15.  
  16. smlradius = 60; bigradius = 120; points = 90
  17. # Variable Arrays To Store X&Y points for a small and big circle
  18. smcx = []; smcy = []; bgcx = []; bgcy = []
  19.  
  20. # Calculate the X&Y points and put values into the array
  21. angleStep = pi *2 / points
  22. for a in range(0,points):
  23. smcx.append(sin(a * angleStep)*smlradius)
  24. smcy.append(cos(a * angleStep)*smlradius)
  25. bgcx.append(sin(a * angleStep)*bigradius)
  26. bgcy.append(cos(a * angleStep)*bigradius)
  27.  
  28. a=0; b=0 # Points a & b will be moving points of the circles
  29. c=0; d=0 # Points for sine and cosine waves
  30. cx=800/2; cy=600/2 # Centre of the screen
  31. r=random.randint; pdl=pygame.draw.line # Abbreviations for commands
  32.  
  33. run = 1
  34. while run == 1:
  35.  
  36. screen.blit(bk,(0,0)) # Draw the background surface
  37. screen.blit(dot,(cx-2,cy-2)) # Centrepoint
  38.  
  39. # Draw the circle
  40. screen.blit(dot, (bgcx[a]+cx-2,bgcy[a]+cy-2))
  41. screen.blit(dot, (smcx[a]+cx-2,smcy[a]+cy-2))
  42. screen.blit(dot, (bgcx[b]+cx-2,bgcy[b]+cy-2))
  43. screen.blit(dot, (smcx[b]+cx-2,smcy[b]+cy-2))
  44. rcol=r(0,255); gcol=r(0,255); bcol=r(0,255)
  45. pdl(bk,[rcol,gcol,bcol],(bgcx[a]+cx-2,bgcy[a]+cy-2),(smcx[a]+cx-2,smcy[a]+cy-2))
  46. pdl(bk,[rcol,gcol,bcol],(bgcx[b]+cx-2,bgcy[b]+cy-2),(smcx[b]+cx-2,smcy[b]+cy-2))
  47. pdl(bk,[rcol,gcol,bcol],(smcx[a]+cx-2,smcy[a]+cy-2),(smcx[b]+cx-2,smcy[b]+cy-2))
  48.  
  49. # Constrained points (Fixed X or Y)
  50. screen.blit(dot, (bgcx[a]+cx-2,cy-bigradius-14))
  51. screen.blit(dot, (bgcx[b]+cx-2,cy+bigradius+10))
  52. screen.blit(dot, (smcx[a]+cx-2,cy-bigradius-34))
  53. screen.blit(dot, (smcx[b]+cx-2,cy+bigradius+30))
  54. screen.blit(dot, (cx-bigradius-14,bgcy[a]+cy-2))
  55. screen.blit(dot, (cx-bigradius-34,smcy[a]+cy-2))
  56. screen.blit(dot, (cx+bigradius+14,bgcy[b]+cy-2))
  57. screen.blit(dot, (cx+bigradius+34,smcy[b]+cy-2))
  58. pdl(bk,[rcol,gcol,bcol],(bgcx[a]+cx-2,cy-bigradius-14),(smcx[a]+cx-2,cy-bigradius-34))
  59. pdl(bk,[rcol,gcol,bcol],(bgcx[b]+cx-2,cy+bigradius+10),(smcx[b]+cx-2,cy+bigradius+30))
  60. pdl(bk,[rcol,gcol,bcol],(cx-bigradius-14,bgcy[a]+cy-2),(cx-bigradius-34,smcy[a]+cy-2))
  61. pdl(bk,[rcol,gcol,bcol],(cx+bigradius+14,bgcy[b]+cy-2),(cx+bigradius+34,smcy[b]+cy-2))
  62.  
  63. # Ellipse (Big and Small Radius points mixed)
  64. screen.blit(dot, (bgcx[a]+cx-2+bigradius+160,smcy[a]+cy-2))
  65. screen.blit(dot, (smcx[a]+cx-2-bigradius-160,bgcy[a]+cy-2))
  66.  
  67. screen.blit(dot, (cx-2+bigradius+160,cy-2))
  68. screen.blit(dot, (cx-2-bigradius-160,cy-2))
  69. pdl(bk,[rcol,gcol,bcol],(cx-2+bigradius+160,cy-2),(bgcx[a]+cx-2+bigradius+160,smcy[a]+cy-2))
  70. pdl(bk,[rcol,gcol,bcol],(cx-2-bigradius-160,cy-2),(smcx[a]+cx-2-bigradius-160,bgcy[a]+cy-2))
  71.  
  72. # Sine and Cosine Waves
  73. screen.blit(dot, (c,smcy[a]+cy-2-bigradius-100))
  74. c=c+1
  75. if c>=800: c=0
  76. screen.blit(dot, (smcx[a]+cx-2-bigradius-100,d))
  77. d=d+1
  78. if d>=600: d=0
  79.  
  80. clock.tick(200); pygame.display.update(); a=a-1; b=b+1
  81. if b>=points: b=0
  82. if a==-1: a=points-1
RAW Paste Data