Bottom Page

• 0 Vote(s) - 0 Average
• 1
• 2
• 3
• 4
• 5
 help with game hammza Silly Frenchman Posts: 20 Threads: 2 Joined: Oct 2017 Reputation: 0 Likes received: 0 #21 Dec-06-2017, 02:37 PM (This post was last modified: Dec-06-2017, 02:38 PM by hammza. Edited 1 time in total.) (Nov-14-2017, 09:23 PM)metulburr Wrote: if you remove the elif, to have all if, you can do two angles at the same time making it more "natural" feeling (Nov-14-2017, 08:40 PM)Windspar Wrote: here a pygame example ```import pygame pygame.init() SCREEN = 600, 400 class Bullet:     def __init__(self, x, y, color, movement):         self.position = [x - movement[0], y - movement[1]]         self.color = color         self.movement = movement     def blit(self, surface):         self.position[0] += self.movement[0]         self.position[1] += self.movement[1]         position = int(self.position[0]), int(self.position[1])         pygame.draw.circle(surface, self.color, position, 3) class Ship:     def __init__(self, x, y, color, pointlist):         self.position = [x, y]         self.pointlist = pointlist         self.color = color     def move(self, x, y):         self.position[0] += x         self.position[1] += y     def blit(self, surface):         points = []         for point in self.pointlist:             points.append((self.position[0] + point[0], self.position[1]  + point[1]))         pygame.draw.polygon(surface, self.color, points) class Pauser:     def __init__(self, length):         self.length = length         self.last_tick = 0     def elaspe(self, ticks):         if ticks > self.last_tick + self.length:             self.last_tick = ticks             return True         return False class App:     def __init__(self):         pygame.display.set_caption("Invaders")         # create are screen. Your main surface         self.screen = pygame.display.set_mode(SCREEN)         # create a clock for framerate control         self.clock = pygame.time.Clock()         self.bullets = []         self.bullets_pauser = Pauser(300)         self.ship = Ship(300, 370, (0,0,200), ((0,0), (-20,30), (20,30)))     def loop(self):         running = True         self.ticks = 0         while running:             for event in pygame.event.get():                 if event.type == pygame.QUIT:                     running = False                 elif event.type == pygame.KEYDOWN:                     if event.key == pygame.K_ESCAPE:                         running = False             last_ticks = self.ticks             self.ticks = pygame.time.get_ticks()             speed = (self.ticks - last_ticks) * 0.05             # grab all keys return True if pressed             key_press = pygame.key.get_pressed()             # creaate bullets             if key_press[pygame.K_SPACE]:                 # shoot bullets in intervals                 if self.bullets_pauser.elaspe(self.ticks):                     x, y = self.ship.position                     self.bullets.append(Bullet(x, y, (0,0,200), (0,-10)))             # ship movement             ship_speed = speed * 3             if key_press[pygame.K_LEFT]:                 self.ship.move(-ship_speed, 0)             if key_press[pygame.K_RIGHT]:                 self.ship.move(ship_speed, 0)             if key_press[pygame.K_UP]:                 self.ship.move(0, -ship_speed)             if key_press[pygame.K_DOWN]:                 self.ship.move(0, ship_speed)             # clear screen             self.screen.fill((0,0,0))             # blits bullets             remove_list = []             for enum, bullet in enumerate(self.bullets):                 if bullet.position[1] < 0:                     remove_list.append(enum)                 else:                     bullet.blit(self.screen)             for enum, index in enumerate(remove_list):                 self.bullets.pop(index - enum)             self.ship.blit(self.screen)             pygame.display.flip()             # frame per seconds             self.clock.tick(30) def main():     app = App()     app.loop()     pygame.quit() if __name__ == '__main__':     main()``` Thank very much metulburr But I'm looking for a code with the less libraries Thanks for your concern Windspar Minister of Silly Walks Posts: 332 Threads: 12 Joined: Oct 2016 Reputation: 16 Likes received: 42 #22 Dec-06-2017, 02:47 PM Don't use threading. Every widget has after method. You can have more then one if needed. Take a look here . You might see another way of doing things. hammza likes this post 99 percent of computer problems exists between chair and keyboard. hammza Silly Frenchman Posts: 20 Threads: 2 Joined: Oct 2017 Reputation: 0 Likes received: 0 #23 Dec-07-2017, 01:07 AM Windspar Can I communicate with you in other Facebook or telegram Iam a self learning like you, I need your advice in how I learn and improve my self. Thank you again :) Windspar Minister of Silly Walks Posts: 332 Threads: 12 Joined: Oct 2016 Reputation: 16 Likes received: 42 #24 Dec-07-2017, 03:37 AM One thing i classified myself as a Novice. Right now I am trying to learn concept of programming like (message bus / event bus) ways to prevent spaghetti code. Just to let you know. I never use tkinter for anything. Just my preference to use wxpython , pygame, pysfml. To help you i just read the docs and google some info. Best way of learning write the code until it works. Then rewrite using a different way. Write a small program using function. Then rewrite using classes. The rewrite using dict. You always can contact me here. Even personal message me here. But the community as a whole can help you more. If you need to understand classes ```a = 1 # variable instance class MyClass(object):     a = 2 # class instance. only created once even if you create 50 objects.     # reason it created once because if a class instance not a object instance.     # just a builtin constructor for objects. Create a new object each time it called     def __init__(self, a): # self = object         self.a = a # object instance, does not overwrite class instance     # object method simlar to a function     def double(self): # self bring in object         self.a *= 2 b = MyClass(3) # MyClass.__init__(object, 3) , b = points to object. b is not the object print(a) print(MyClass.a) # only difference from (a) is a namespace print(b.a) # prints object a print() c = b # c now points to same object. class are pass by reference c.double()  # b and c, a = 6. MyClass.double(object) print(b.a) print(c.a)``` hammza likes this post 99 percent of computer problems exists between chair and keyboard. hammza Silly Frenchman Posts: 20 Threads: 2 Joined: Oct 2017 Reputation: 0 Likes received: 0 #25 Dec-07-2017, 06:00 AM Windspar Thank you for everything You're the best helper ever met Maybe I need more time to learn, because I know the basics, but making programs is hard thing. I need to review your code step by step to understand every line, and why you use it. Windspar Minister of Silly Walks Posts: 332 Threads: 12 Joined: Oct 2016 Reputation: 16 Likes received: 42 #26 Dec-07-2017, 03:48 PM (This post was last modified: Dec-07-2017, 04:05 PM by Windspar.) example using function and dict ```import tkinter as tk game = {} def create_pauser(length):     return { 'length':length,              'last tick':0 } def pauser_elaspe(pauser, ticks):     if ticks > pauser['last tick'] + pauser['length']:         pauser['last tick'] = ticks         return True     return False def create_bullet(canvas, x, y, color, mx, my):     return {'id': canvas.create_oval(x -3 , y - 3, x + 3, y + 3, fill=color),             'movement': {'x':mx, 'y':my} } def bullet_move(canvas, bullet):     canvas.move(bullet['id'], bullet['movement']['x'], bullet['movement']['y']) def create_ship(canvas,x, y, color):     return canvas.create_polygon(x, y, x - 20, y + 30, x + 20, y + 30, fill=color) def go_press(event):     global game     game['keys press'][event.keysym] = True def go_release(event):     global game     game['keys press'][event.keysym] = False def shoot():     global game     x, y = game['canvas'].coords(game['ship'])[:2]     game['bullets'].append(create_bullet(game['canvas'], x, y, 'blue', 0, -10)) def game_loop():     global game     remove_bullets = []     for enum, bullet in enumerate(game['bullets']):         coords = game['canvas'].coords(bullet['id'])         if coords[0] < 0 or coords[1] < 0 or coords[2] > game['SCREEN SIZE']['w']:             remove_bullets.append(enum)             game['canvas'].delete(bullet['id'])         else:             bullet_move(game['canvas'], bullet)     for enum, index in enumerate(remove_bullets):         game['bullets'].pop(index - enum)     # moving ship     if game['keys press'].get('Left', False):         game['canvas'].move(game['ship'], -game['ship speed'], 0)     if game['keys press'].get('Right', False):         game['canvas'].move(game['ship'], game['ship speed'], 0)     if game['keys press'].get('Up', False):         game['canvas'].move(game['ship'], 0, -game['ship speed'])     if game['keys press'].get('Down', False):         game['canvas'].move(game['ship'], 0, game['ship speed'])     if game['keys press'].get('space', False):         if pauser_elaspe(game['shoot pauser'], game['ticks']):             shoot()     game['ticks'] += 1     game['root'].after(int(1000 / 30), game_loop) def main():     global game     game['SCREEN SIZE'] = {'w':600, 'h':400}     game['root'] = tk.Tk()     game['canvas'] = tk.Canvas(game['root'], width=game['SCREEN SIZE']['w'], height=game['SCREEN SIZE']['h'])     game['canvas'].pack()     game['bullets'] = []     game['ticks'] = 0     game['shoot pauser'] = create_pauser(12)     game['keys press'] = {}     game['ship'] = create_ship(game['canvas'], 300, 370, 'blue')     game['ship speed'] = 5     # you can use root or canvas here it all goes to the same place     game['root'].bind_all('', go_press)     game['root'].bind_all('', go_release)     game_loop()     game['root'].mainloop() if __name__ == '__main__':     main()``` example using a class as a global container ```import tkinter as tk # store variable here class Game:     pass def create_pauser(length):     return { 'length':length,              'last tick':0 } def pauser_elaspe(pauser, ticks):     if ticks > pauser['last tick'] + pauser['length']:         pauser['last tick'] = ticks         return True     return False def create_bullet(canvas, x, y, color, mx, my):     return {'id': canvas.create_oval(x -3 , y - 3, x + 3, y + 3, fill=color),             'movement': {'x':mx, 'y':my} } def bullet_move(canvas, bullet):     canvas.move(bullet['id'], bullet['movement']['x'], bullet['movement']['y']) def create_ship(canvas,x, y, color):     return canvas.create_polygon(x, y, x - 20, y + 30, x + 20, y + 30, fill=color) def go_press(event):     Game.keys_press[event.keysym] = True def go_release(event):     Game.keys_press[event.keysym] = False def shoot():     x, y = Game.canvas.coords(Game.ship)[:2]     Game.bullets.append(create_bullet(Game.canvas, x, y, 'blue', 0, -10)) def game_loop():     remove_bullets = []     for enum, bullet in enumerate(Game.bullets):         coords = Game.canvas.coords(bullet['id'])         if coords[0] < 0 or coords[1] < 0 or coords[2] > Game.SCREEN_SIZE['w']:             remove_bullets.append(enum)             Game.canvas.delete(bullet['id'])         else:             bullet_move(Game.canvas, bullet)     for enum, index in enumerate(remove_bullets):         Game.bullets.pop(index - enum)     # moving ship     if Game.keys_press.get('Left', False):         Game.canvas.move(Game.ship, -Game.ship_speed, 0)     if Game.keys_press.get('Right', False):         Game.canvas.move(Game.ship, Game.ship_speed, 0)     if Game.keys_press.get('Up', False):         Game.canvas.move(Game.ship, 0, -Game.ship_speed)     if Game.keys_press.get('Down', False):         Game.canvas.move(Game.ship, 0, Game.ship_speed)     if Game.keys_press.get('space', False):         if pauser_elaspe(Game.shoot_pauser, Game.ticks):             shoot()     Game.ticks += 1     Game.root.after(int(1000 / 30), game_loop) def main():     Game.SCREEN_SIZE = {'w':600, 'h':400}     Game.root = tk.Tk()     Game.canvas = tk.Canvas(Game.root, width=Game.SCREEN_SIZE['w'], height=Game.SCREEN_SIZE['h'])     Game.canvas.pack()     Game.bullets = []     Game.ticks = 0     Game.shoot_pauser = create_pauser(12)     Game.keys_press = {}     Game.ship = create_ship(Game.canvas, 300, 370, 'blue')     Game.ship_speed = 5     # you can use root or canvas here it all goes to the same place     Game.root.bind_all('', go_press)     Game.root.bind_all('', go_release)     game_loop()     Game.root.mainloop() if __name__ == '__main__':     main()``` hammza likes this post 99 percent of computer problems exists between chair and keyboard. hammza Silly Frenchman Posts: 20 Threads: 2 Joined: Oct 2017 Reputation: 0 Likes received: 0 #27 Dec-07-2017, 05:30 PM Every time you impress Me with your skills I was nearly to give up, and leave the python programming to study assembly and c Lang. That way proves that there is another solutions without using mush libraries, You need just an open mind and basic skills to make whatever you want. Thank you very much man. And by the way, I remarked some thing When I push space bar, and keep shooting, that ship can move in all the ways, accept (up+left), it stops until i stop pushing space bar. Why is this happening?? Windspar Minister of Silly Walks Posts: 332 Threads: 12 Joined: Oct 2016 Reputation: 16 Likes received: 42 #28 Dec-07-2017, 09:24 PM (This post was last modified: Dec-07-2017, 09:39 PM by Windspar. Edited 3 times in total.) Quote:And by the way, I remarked some thing When I push space bar, and keep shooting, that ship can move in all the ways, accept (up+left), it stops until i stop pushing space bar. Why is this happening?? My examples run find on my computer. I'm using Linux. What is your os ? You can still take a look at C, but they have no builtin or package GUI. Hardly anyone uses Assembly. Unless you developing device driver or trying to optimize small piece of code. Cython is nice when you need to optimize code for python. It C and python together with some restriction. It build wrapper around c code. Then you import into python. It give you a library to pass with python code. PyPy that uses a jit(just in time) compiler to make code run faster. There are some restriction. D a general-purpose programming language. It like C++ and python together in general-purpose programming language. It has memory safety like python. dmd is good cross platform compiler. dub is great for package building. Hello World Examples. Bare minium code. Linux compile code. Hide/ShowD ``````Output:import std.stdio; // dmd -ofhello hello.d void main() {   writeln("Hello World"); }``````Java ``````Output:// javac HelloWorld.java public class HelloWorld {     public static void main(String args) {        System.out.println("Hello World");     } }``````Nasm assembly ``````Output:; nasm hello asm ; nasm -f elf hello.asm ; ld -m elf_i386 hello.o -o hello SECTION .data msg db 'Hello World!', 0Ah SECTION .text global _start _start:     mov    edx, 13        ; length of string     mov ecx, msg     mov ebx, 1        ; stdout     mov eax, 4        ; system write     int 80h ; exit call     mov ebx, 0     mov eax, 1     int 80h``````C ``````Output:#include // gcc -o hello hello.c int main() {   printf("Hello World\n");   return 0; }``````C++ ``````Output:#include // c++ also can use c code // g++ -o hello hello.cpp int main() {   std::cout << "Hello World" << std::endl;   return 0; }``````Rust ``````Output:// rustc hello.rs fn main() { println!("Hello World"); }``````Python `print('Hello World')` 99 percent of computer problems exists between chair and keyboard. hammza Silly Frenchman Posts: 20 Threads: 2 Joined: Oct 2017 Reputation: 0 Likes received: 0 #29 Dec-08-2017, 02:10 AM Iam using win7 x32,x86 I know about using c codes with python. But I didn't learned those things yet, I'm just with the basics. And I know about d language, I like it, but there isn't enough information and libraries using it I found those games years ago, it's really fantastic https://www.uvlist.net/groups/info/dlanguage Windspar Minister of Silly Walks Posts: 332 Threads: 12 Joined: Oct 2016 Reputation: 16 Likes received: 42 #30 Dec-08-2017, 02:44 AM Curious thou why up + left doesn't work. If every other way is working. Maybe try a different keyboard. Did you change any code ? I really like D. It has so many features. I still trying to learn them. D can use all of c libraries but you have to wrap them in. Derelict is a good source for making games. You can check some of my code on Github. 99 percent of computer problems exists between chair and keyboard. « Next Oldest | Next Newest »

Top Page

 Possibly Related Threads... Thread Author Replies Views Last Post [PyGame] Game Logic problem with a "The Game of Life" Replication Coda 2 251 Dec-24-2018, 09:26 AM Last Post: Coda

Forum Jump:

Users browsing this thread: 1 Guest(s)