Pygame中get_rect( )方法——一首歌的时间学会

Posted 一个兴趣使然的程序猿罢了

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pygame中get_rect( )方法——一首歌的时间学会相关的知识,希望对你有一定的参考价值。

首先,我们需要一张图片,做我们的对象(不要想歪),是对象!对,对象!

 嗯~这个对象非常好!

然后,我们在学习rect对象时,首先了解rect对象是一个实际绘制的矩形区域。

也就是我们图片最终出现的图片的位置

get_rect ( )函数的作用是将我们的图片的位置用代码的形式告诉我们

那么我们上代码!

import pygame
import sys
pygame.init()
size = width,height = 645,645
bg = (255,255,255)

screen = pygame.display.set_mode(size)
pygame.display.set_caption("介绍rect")
girl = pygame.image.load("13.jpg")

# 获得图像的位置矩形
position = girl.get_rect()

position.right = 645

position.bottom = 645
print("left= %d,right= %d" % (position.left,position.right))
print("top= %d,bottom= %d" % (position.top,position.bottom))

# 设置为死循环,确保窗口一直显示
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
    screen.fill(bg)
    screen.blit(girl,position)
    pygame.display.flip()

这是在填满整张画布的情况,我们已经将rect的right和bottom属性设置为645

,大家可以发现,我设置的窗口size也是645*645,为什么这么设置呢?,因为我的图片的属性像素就是

 所以可以自然而然铺满整个画布。

这只是一个实例,大家一定对top,bottom,right,left有所困惑,下面为大家再次进行实例:

import pygame
import sys
pygame.init()
size = width,height = 700,700
bg = (255,255,255)

screen = pygame.display.set_mode(size)
pygame.display.set_caption("介绍rect")
girl = pygame.image.load("13.jpg")

# 获得图像的位置矩形
position = girl.get_rect()
print("left= %d,right= %d" % (position.left,position.right))
print("top= %d,bottom= %d" % (position.top,position.bottom))

# 设置为死循环,确保窗口一直显示
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
    screen.fill(bg)
    screen.blit(girl,position)
    pygame.display.flip()

运行情况为:

 可见直接蹦出一个画布上面粘贴着我们的图片,而此时输出结果为:

left= 0,right= 645
top= 0,bottom= 645
 

 这样,get_rect( )函数的作用一目了然,便是获取图片在画布上的位置

        具体top,bottom,right,left对应着哪些东西呢?

我邀请了我的不知名画师(但我觉得很ok)女友给我制作了一张图,一目了然:

 

图片未经允许,禁止转载。

ajaxSetup

1.Pygame中get_rect()方法:
http://blog.sina.cn/dpool/blog/s/blog_6c13316d0102ytgy.html
2.Pygame中rect 初探:
https://www.cnblogs.com/sureyet/p/10501527.html
3.有效的括号:
https://www.cnblogs.com/manru75/p/13045662.html
4.ES6新特性:
https://www.cnblogs.com/coder-lzh/p/9745124.html
5.grunt前端打包工具:
https://www.cnblogs.com/yexiaochai/p/3603389.html
6.英文字母对应的Unicode编码:
https://www.cnblogs.com/wanghui-garcia/p/10568924.html
7.js 向上取整、向下取整、四舍五入:
https://www.cnblogs.com/Marydon20170307/p/8831055.html
8.js中isNaN和Number.isNaN的区别:
https://www.cnblogs.com/Mrrabbit/p/10990218.html
9.http请求头中Referer的含义和作用:
https://blog.csdn.net/shenqueying/article/details/79426884
10.HTTP Referer:
https://www.cnblogs.com/Shellcoochi/p/11735327.html
11.jQuery - 拦截所有Ajax请求(统一处理错误状态码等):
http://m.hangge.com/news/cache/detail_1412.html
12.对jQuery ajax请求成功(失败)回调执行前的统一处理:
https://blog.csdn.net/fendouzhe123/article/details/26622805
13.js四舍五入函数round使用实例:
https://m.jb51.net/article/49937.htm
14.jQuery ajaxSetup() 方法(为所有 AJAX 请求设置默认 URL 和 success 函数):
https://www.runoob.com/jquery/ajax-ajaxsetup.html
15.让你的React表单操作更优雅:
https://blog.csdn.net/weixin_34381687/article/details/88066829

This browser does not support music or audio playback. Please play it in WeChat or another browser.

1.Js页面滚动到特定节点

<p id='pId'></p>
<button onclick='doIt()'>测试</button>
<script>
    function doIt(){
        $('html body').animate({scrollTop: $('#pId').offset().top - 105},200)
    }
</script>

2.力扣66加一:

<script>
    var plusOne = function(digits){
        const len = digits.length;
        for(let i = len-1;i>=0;i--){
            digits[i]++;          //从末位遍历数组元素,先给最后一位加1
            digits[i] %= 10;      //加一后对最后一位取余数,看是否为10,是10需要向前进位
            if(digits[i] != 0){   //如果除以10余数不为0,说明最后一位加一后小于10,不需要向前进位,那就直接返回这个数组
                return digits;
            }
        }
        digits = [...Array(len + 1)].map(_=>0);   //如果上面循环完成后没返回数组,就继续往下执行,若执行至此,就说明末位加一后需要一直向前进位。这句意思是拷贝一个比digits数组长度多一位的数组
        digits[0] = 1;   //上面一行代码将digits每个数组元素赋值为0,但进位后首位元素得加1
        return digits;
    }
</script>

3.力扣7整数反转:

<script>
    var reverse = function(x){
        if(typeof(x) === 'number'){      //判断参数x是否是数字类型
            let str = '';                
            let result = null;
            str = x.toString().split('').reverse().join('');      //将数字类型x转为字符串然后切割字符串,将切割后的字符反转、拼接
            if(x<0){
                str = '-' + str;
            }
            result = parseInt(str);
            if(result>2147483648 || result<-2147483648){          //判断result是否超出数值范围,超出范围返回0
                return 0;
            }
            return result;
        }
    }
</script>

4.力扣20题,有效的括号:

<script>
    var isValid = function(s){
        while(s.length){
            var temp = s;
            s = s.replace('()','');
            s = s.replace('[]','');
            s = s.replace('{}','');
            if(s == temp){
                return false;       //判断替换后的s跟它的初始值temp值作对比,如果相等,那么说明不是有效的字符串
            }
            return true;
        }
    }
</script>

5.区间列表的交集:

<script>
    var intervalIntersection = (A,B) =>{
        let res = [];
        let i = 0, j =0;     //两个指针,分别遍历A B数组
        while(i<A.length && j<B.length){
            let start = Math.max(A[i][0],B[j][0]);        //求交集区间的左界
            let end = Math.min(A[i][1],B[j][1]);          //求交集区间的右界
            if(start<=end){
                //只要形成了区间,就往res里推入
                res.push([start,end]);
            }
            A[i][1]<B[j][1]>i++:j++;   //谁的右界更短,谁的指针+1
            return res;
        }
    }
</script>

6.力扣16.17连续数列:

<script>
    var series = function(S,N){
        var k = [];
        const elem = S/6 - (N*N-N)/12;
        if(elem%1 === 0 && elem >0){
            for(var i = 0;i<N;i++){
                k.push(elem+i)
            }
            return k.join(' ');
        } else{
            return -1;
        }
    }
</script>

7.力扣58-1:翻转单词顺序:

<script>
    var reverseWords = function(s){
        var res = s.trim().replace(/\s/,' ').split(' ');
        res.reverse();
        return es.join(' ');
    }
    reverseWords('Today is sunday.');
</script>

8.【Words】每个句子由多个单词组成,句子中的每个单词长度可能不一样,假设每个单词的长度LW为该单词的重量,请给出整个句子的平均重量V:

示例:
输入:Who Love Monday
输出: 3.67

<script>
    var wordsWeight = function(wordString){
        let V=0 , LW=0 , S=0;
        let wordList = wordString.split(' ');
        var wordListLength = wordList.length;
        for(let i = 0;i<wordListLength;i++){
            LW = wordList[i].length;
            S += LW;
        }
        V = (S/wordListLength).toFixed(2);
        return V;
    }
    wordsWeight('Who Love Monday');
</script>

9.【按索引分为翻转文章片段】输入一个英文文章片段,翻转指定区间的单词顺序,标点符号和普通字母一样处理。例如输入字符串'I am a developer.',区间[0,3],则输出'developer. am I'。:

输入描述:使用换行隔开三个参数,第一个参数为英文文章内容即英文字符串,第二个参数为翻转起始下标(从零开始),第三个参数为结束单词下标。
输出描述:翻转后的英文文章文章片段所有单词之间以一个半角空格分割进行输出。

<script>
    function reverse(words,index1,index2){
        words = words.replace(/\s+/g,' ');
        var m = words.split(' ');
        m.concat().slice(index1,index2 + 1).reverse().forEach((value,index)=>{
            m.splice(index1+index,1,value);
        })
        var result = m.join(' ');
        return result;
    }
    reverse('I am a good person. And you?',2,3);
</script>

10.js如何将字符串按照换行符分隔成数组:

<script>
newArr = str.split(/[(\r\n)\r\n]+/);    //\n是换行符(new line)。\r是回车,英文是Carriage return
newArr.forEach((item,index)=>{
    if(!item){
        newArr.splice(index,1);   //删除空项
    }
})
</script>

11.【字符串加密】提供一串未加密的字符串str,通过对字符串的每一个字母进行改变来实现加密,加密方式是在每一个字母str[i]偏移特定数组元素a[i]的量,数组a前三位已经赋值:a[0]=1,a[1]=2,a[2]=4。当i>=3时,数组元素a[i]=a[i-1]+a[i-2]+a[i-3],例如:原文abcde加密后为bdgkr,其中偏移量分别是1,2,3,7,13。

输入描述:第一行为一个整数n(1<<=n<=1000),表示有n组测试数据,每组数据包含一行,原文str(只包含小写字母,0<长度<=50)
输出描述:每组测试数据输出一行,表示字符串的密文。
示例:
1
xy
输出:ya

var encryptionWords = function(str){
    str = str.split(/[(\r\n)\r\n]+/);
    var wordList = [];
    str.forEach((item,index)=>{
        if(item){
            item = item.trim();
            var itemList = item.split(' ');
            var len = itemList.length;
            var arr = [];
            arr[0]=1,arr[1]=2,arr[2]=4;
            if(len>3){
                for(var i=3;i<len;i++){
                    arr[i] = arr[i-1]+arr[i-2]+arr[i-3];
                }
            }
            for(var j=0;j<len;j++){
                var unocede = item.charCodeAt(j);
                unicede += arr[j];
                if(unicode > 122){
                    unicode = 96 + unicode -122;
                }
                var word = String.fromCharCode(unicode);
                itemList.splice(j,1,word);
            }
            wordList.push(itemList.join(' '));
        }
    })
    return wordList.join('\n');
}

encryptionWords('abcdexyz');
//所用知识点:
//(1).charCodeAt():返回字符串第一个字符的Unicede编码
//(2).fromCharCode():将Unicede编码转为一个字符串

以上是关于Pygame中get_rect( )方法——一首歌的时间学会的主要内容,如果未能解决你的问题,请参考以下文章

ajaxSetup

使用pygame自动完成歌曲后如何播放文件中的下一首歌曲

pygame绘制一个随机背景

Pygame简单入门学习笔记

python,外星人入侵游戏,Pycharm,pygame,写完了,但是有bug,希望帮我找一下原因

如何听出一首歌的节拍?